Java 缓冲流复制文件

本文介绍了Java中如何使用缓冲流BufferedInputStream和BufferedOutputStream提高文件读写速度。通过实例化FileInputStream、FileOutputStream、BufferedInputStream和BufferedOutputStream,并进行文件复制操作,展示了缓冲流在文本和非文本文件复制中的应用,确保了正常运行。
摘要由CSDN通过智能技术生成

系列文章目录

1: Java–io流.
2: Java字节流操作文件.
3: Java 字符流复制文本文件.
4: Java FileInputStream读取文本文件.


一、简介

缓冲流包括

  1. BufferedInputStream
  2. BufferedOutputStream
  3. BufferedReader
  4. BufferedReader

这几个类,缓冲流是对节点流的一个包装,可以提高文件读写的速度

二、编写代码

	public void fileBufferInputStreamTest() throws IOException {

        File fileIn = null;
        File fileOu = null;

        FileInputStream fi = null;
        FileOutputStream fo = null;
        BufferedInputStream buffi = null;
        BufferedOutputStream buffo = null;

        try {
            // 1.实例化File对象,指明要读取的文件
            fileIn = new File("D:\\hello.text");
            fileOu = new File("D:\\hello1.text");


            // 2.提供具体的流
            // 2.1实例化节点流
            fi = new FileInputStream(fileIn);
            fo = new FileOutputStream(fileOu);
            // 2.2实例化缓冲流
            buffi = new BufferedInputStream(fi);
            buffo = new BufferedOutputStream(fo);

            // 3.复制文件:读取,写入
            byte[] bytes = new byte[fi.available()];// 修改了这里
            int len;// 记录每次读取的字节的个数
            while ((len = buffi.read(bytes)) != -1){
                buffo.write(bytes, 0, len);
                buffo.flush();
            }

        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            // 4.关闭流
            // 要求:BufferedInputStream是FileInputStream的包装,相当于穿在外面的衣服,而FileInputStream则是穿在厘米俺的衣服,脱衣服时应该先脱外面的衣服再拖厘米俺的,因此应该先关闭BufferedInputStream,再关闭FileInputStream
            if (buffi != null){
                buffi.close();
                if (fi != null){
                    fi.close();
                }
            }
            if (buffo != null){
                buffo.close();
                if (fo != null){
                    fo.close();
                }
            }
        }
    }

三、使用代码

1.文本文件复制

部分代码片段:

// 1.实例化File对象,指明要读取的文件
            fileIn = new File("D:\\hello.text");
            fileOu = new File("D:\\hello1.text");

初始文件:
在这里插入图片描述

复制出的文件:
在这里插入图片描述
结果:正常运行

2.非文本文件

部分代码片段:

// 1.实例化File对象,指明要读取的文件
            ffileIn = new File("D:\\视频1.mp4");
            fileOu = new File("D:\\视频2.mp4");

初始文件:
在这里插入图片描述
复制出的文件:
在这里插入图片描述
结果:正常运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

PareCycest

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值