缓冲流
缓冲流:提高IO流的读写速度
根据流的分类分类字节缓冲流与字符缓冲流
字节缓冲流
写入数据到流中,字节缓冲输出流 BufferedOutputStream
读取流中的数据,字节缓冲输入流 BufferedInputStream
利用字节缓冲流复制 文件 比字节流复制(大文件) 速度快
代码
package com.oracle.demo01; import java.io.BufferedOutputStream; import java.io.FileOutputStream; import java.io.IOException; public class Demo3 { public static void main(String[] args) throws IOException { //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\demo1018\\buffer.txt",true); //添加缓冲流 BufferedOutputStream bos=new BufferedOutputStream(fos); /*//一个字节一个字节写 bos.write(100);*/ byte bytes[]={66,65,67,68}; bos.write(bytes); //释放资源 bos.close(); } } package com.oracle.demo01; import java.io.BufferedInputStream; import java.io.FileInputStream; import java.io.IOException; public class Demo4 { public static void main(String[] args) throws IOException { //明确数据源 FileInputStream fis=new FileInputStream("D:\\demo1018\\buffer.txt"); //添加缓冲流 BufferedInputStream bis=new BufferedInputStream(fis); //一个字节一个读 int len=0; while ((len=bis.read())!=-1) { System.out.println((char)len); } //释放资源 bis.close(); } } package com.oracle.demo01; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class Copy { public static void main(String[] args) throws IOException { //明确数据源 FileInputStream fis=new FileInputStream("D:\\demo1018\\buffer.txt"); //明确目的地 FileOutputStream fos=new FileOutputStream("D:\\demo1018\\a\\buffer2.txt",true); //添加缓冲流 BufferedInputStream bis=new BufferedInputStream(fis); BufferedOutputStream bos=new BufferedOutputStream(fos); /*单个复制 int len=0; while ((len=bis.read())!=-1) { bos.write(len); }*/ //字节数组复制 byte bytes[]=new byte[1024]; int len=0; while ((len=bis.read(bytes))!=-1) { bos.write(bytes,0,len); } //释放资源 bis.close(); bos.close(); } }
字符缓冲流
完成文本数据的高效的写入与读取的操作
字符缓冲输入流 BufferedReader 特殊方法 void newLine() 根据当前的系统,写入一个换行符
package com.oracle.demo02; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; public class Demo1 { public static void main(String[] args) throws IOException { //名确目的地 FileWriter fw=new FileWriter("D:\\demo1018\\buffer2.txt"); //添加缓冲流 BufferedWriter bw=new BufferedWriter(fw); //写一个字符 bw.write(100); bw.flush(); //写一个数组 char ch[]={'你','好','啊'}; bw.write(ch); bw.flush(); //写入换行 bw.newLine(); bw.flush(); //写一个字符串 bw.write("我很好"); //释放资源 bw.close(); } }
字符缓冲输出流 BufferedWriter 特殊方法 public String readLine() 读取一个文本行,包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
package com.oracle.demo02; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public class Demo02 { public static void main(String[] args) throws IOException { //名确数据源 FileReader fr=new FileReader("D:\\demo1018\\buffer2.txt"); //添加缓冲流 BufferedReader br=new BufferedReader(fr); //开始一行一行的读 String line=null; while ((line=br.readLine())!=null) { System.out.println(line); } //释放资源 br.close(); } }
使用字符缓冲流完成文本文件的复制
1,指定数据源, 是数据源中读数据,采用输入流 2,指定目的地,是把数据写入目的地,采用输出流 3,读数据 4,写数据 5,关闭流
package com.oracle.demo02; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; public class Copyzifuhuanchong { public static void main(String[] args) throws IOException { //明确数据源 FileReader fr=new FileReader("D:\\demo1018\\buffer2.txt"); //明确目的地 FileWriter fw=new FileWriter("D:\\demo1018\\b\\buffer2.txt"); //添加缓冲流 BufferedReader br=new BufferedReader(fr); BufferedWriter bw=new BufferedWriter(fw); //复制 String line=null; while((line=br.readLine())!=null){ bw.write(line); bw.newLine(); bw.flush(); } //释放资源 br.close(); bw.close(); } }