字节型缓冲流实现非文本文件的复制 [Java]

字节型缓冲流实现非文本文件的复制 [Java],第1张

字节型缓冲流实现非文本文件的复制 [Java] 缓冲流(字节型)实现非文本文件的复制 首先我们要知道:
  • 缓冲流是处理流的一种
那么什么是处理流?
  • 处理流就是对现有的流的包装
    • 注意: 我们创建处理流对象的时候不会抛出异常
缓冲流的主要作用
  • 提高文件的读写效率
为什么使用缓冲流可以提高文件的读写速度
  • 因为缓冲流内部提供了一个缓冲区
    • 默认缓冲区的大小为: 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,我们可以发现这两个文件的内容和这两个文件的大小完全相同
总结:
  1. 关闭外层流的同时,内层流也会自动进行关闭
    • 所以如果我们关闭了外层流, 这个时候我们可以将内层流的关闭省略掉
  • 也就是内层流随着外层流的关闭而关闭
  1. BufferedOutputStream类中有一个flash()方法
    • 可以调用这个方法就可以刷新缓冲区

关于为什么我们缓冲流中有这个缓冲区之后就提升文件读取的速度?

  • 这个我们后面进行详细的讲解

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5686464.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存