![字节型缓冲流实现非文本文件的复制 [Java],第1张 字节型缓冲流实现非文本文件的复制 [Java],第1张](/aiimages/%E5%AD%97%E8%8A%82%E5%9E%8B%E7%BC%93%E5%86%B2%E6%B5%81%E5%AE%9E%E7%8E%B0%E9%9D%9E%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6%E7%9A%84%E5%A4%8D%E5%88%B6+%5BJava%5D.png)
- 缓冲流是处理流的一种
- 处理流就是对现有的流的包装
- 注意: 我们创建处理流对象的时候不会抛出异常
- 提高文件的读写效率
- 因为缓冲流内部提供了一个缓冲区
- 默认缓冲区的大小为: 8192个byte — 也就是8kB
- 默认缓冲区大小: private static int DEFAULT_BUFFER_SIZE = 8192;
这里我们举一个例子: 这里例子中我们使用字节型缓冲流完成非文本文件的复制
eg:
package IO流.fileinputstream;
import java.io.*;
public class Test {
public static void main(String[] args) throws IOException {
File file1 = new File("abc.png");
File file2 = new File("abc4.png");
FileInputStream fis = new FileInputStream(file1);
FileOutputStream fos = new FileOutputStream(file2);
BufferedInputStream bis = new BufferedInputStream(fis);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte [] buffer = new byte[5];
int len = 0;
while((len = bis.read()) != -1){
bos.write(buffer,0,len);
}
bos.close();
bis.close();
// fos.close();
// fis.close();
}
}
- 这里我们只是做一个测试: – 所以就使用throws + 异常类型 的方法对异常进行了处理,但是在我们的实际编程中是使用try – catch – finally的方式对异常进行处理
- 我们要将流的关闭 *** 作写到finally代码块中
- 我们这个程序是将本项目之下的abc.png文件复制一份, 我们运行完之后就会在本项目之下多一个abc4.png,我们可以发现这两个文件的内容和这两个文件的大小完全相同
- 关闭外层流的同时,内层流也会自动进行关闭
- 所以如果我们关闭了外层流, 这个时候我们可以将内层流的关闭省略掉
- 也就是内层流随着外层流的关闭而关闭
- BufferedOutputStream类中有一个flash()方法
- 可以调用这个方法就可以刷新缓冲区
关于为什么我们缓冲流中有这个缓冲区之后就提升文件读取的速度?
- 这个我们后面进行详细的讲解
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)