IO P07 缓冲流 (缓冲字节流)

未使用 缓冲字节流前

package file;

import java.io.*;

public class TestCopyBigFile {
    public static void main(String[] args) {
        long now = System.currentTimeMillis();
        String srcFilePath = "测试包.rar";
        String distFilePath = "/Users/hike/Desktop/java/JavaSE/aa/bb/cc/测试包.rar";
        try(InputStream fis = new FileInputStream(srcFilePath); OutputStream fos = new FileOutputStream(distFilePath)){
            // 单个字符写入实在太慢了
//            int b;
//            int index = 0;
//            while ((b = fis.read()) != -1) {
//                fos.write(b);
//                index++;
//                if (index % (1024*1024) == 0) {
//                    System.out.println("写入了 " + (index/ (1024*1024)) + "M...");
//                }
//            }

            // 用字节数组的方式读取数据
            byte[] bytes = new byte[1024];
            int len;
            int index = 0;
            while((len = fis.read(bytes)) != -1) {
                fos.write(bytes, 0, len);
                index++;
                if (index % (1024) == 0) {
                    System.out.println("写入了 " + (index/ (1024)) + "M...");
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("一共耗时 " + (System.currentTimeMillis() - now) + "毫秒");
    }
}

使用缓冲字节流

package file;

import java.io.*;

public class TestCopyBigFile {
    public static void main(String[] args) {
        long now = System.currentTimeMillis();
        String srcFilePath = "测试包.rar";
        String distFilePath = "/Users/hike/Desktop/java/JavaSE/aa/bb/cc/测试包.rar";
        // 就改了这一行代码
        try(InputStream fis = new BufferedInputStream(new FileInputStream(srcFilePath)); OutputStream fos = new BufferedOutputStream(new FileOutputStream(distFilePath))){
            // 用字节数组的方式读取数据
            byte[] bytes = new byte[1024];
            int len;
            int index = 0;
            while((len = fis.read(bytes)) != -1) {
                fos.write(bytes, 0, len);
                index++;
                if (index % (1024) == 0) {
                    System.out.println("写入了 " + (index/ (1024)) + "M...");
                }
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("一共耗时 " + (System.currentTimeMillis() - now) + "毫秒");
    }
}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值