缓冲流能高效的读取数据
缓冲流底层自带了8192的缓冲区提高性能,他在原有的流上进行了包装,加上了缓冲效果
原理:
读入时首先会将内存中缓冲区大小的数据读入缓冲区中,接着下次读取直接从缓冲区中读取数据,当缓冲区中数据读取完再从内存中读取数据存到缓冲区。写出时同样有个缓冲区进行类似操作,因为内存中读取速度比从硬盘中读取速度更快,达到加速效果
BufferedInputStream,BufferedInputStream:字节输入,输出缓存流
创建缓冲流对象
我们首先来看构造方法的形参
第一个构造方法的形参是一个基本流,第二个构造方法的第二个参数是设置的缓冲区的大小
输出
BufferedInputStream bi=new BufferedInputStream(new FileInputStream("D:\\code\\javaee\\bufferedStream\\a.txt")); BufferedOutputStream bo=new BufferedOutputStream(new FileOutputStream("D:\\code\\javaee\\bufferedStream\\b.txt")); byte[]bytes=new byte[1024]; int len; while((len=bi.read(bytes))!=-1){ bo.write(bytes,0,len); } bo.close(); bi.close();
我们可以看到缓冲流使用方法跟普通的字节缓冲流没什么区别
BufferedReader,Bufferedwriter
字符缓冲流跟普通的字符流区别不大,因为字符流就自带缓冲区,但是字符缓冲流中有两个特有的方法我们可以学习一下
1.输入流中readLine方法
读取一行数据,遇到换行停止,如果读到末尾了,会返回null
2.输出流中newLine方法
之前我们讲过不同操作系统换行符不一样
这个方法可以进行跨平台的换行
BufferedWriter bi= new BufferedWriter(new FileWriter("D:\\code\\javaee\\bufferedStream\\a.txt")); BufferedReader bo= new BufferedReader(new FileReader("D:\\code\\javaee\\bufferedStream\\b.txt")); String str; while((str=bo.readLine())!=null){ bi.write(str); bi.newLine(); bi.newLine(); } bo.close(); bi.close(); } }