I/O—缓冲流(处理流的一种)的使用

缓冲流为了提高读写效率,缓冲流不能直接作用于文件,只能作用于节点流

速度提升非常明显

使用 BufferedInputStream、 BufferedOutputStream

读和写字节流和字符流

复制:

 @Test
    public void copy() throws IOException {
        FileInputStream fis = null;
        FileOutputStream fos  = null;

        BufferedInputStream bis = null;
        BufferedOutputStream bos = null;
        try {
            File file1 = new File("C:\\Users\\11027\\Downloads\\潘石屹谈中国房价:是真实还是陷阱(中国已全网查删).mp4");
            File file2 = new File("C:\\Users\\11027\\Downloads\\潘石屹谈中国房价:是真实还是陷阱(中国已全网查删)2.mp4");

            fis = new FileInputStream(file1);
            fos = new FileOutputStream(file2);

            bis = new BufferedInputStream(fis);
            bos = new BufferedOutputStream(fos);

            byte[] buffer = new byte[10];
            int len;
            
            while ((len=bis.read(buffer))!=-1){
            //write方法里有自动flush方法,所有这里就不用手动flush了
                bos.write(buffer,0,len);
            }
          
        } finally {
            if (bis!=null)
            bis.close();

            if(bos!=null)
            bos.close();
     //外层流关闭后内层流会自动关闭,所有内层流关闭可以省略
            if(fis!=null)
            fis.close();

            if(fos!=null)
            fos.close();
        }
        
    }

使用: BufferedReader、 BufferedWriter
除了按照上面的方法,还可以使用readLine方法

@Test
    public void copy2() throws IOException {
        FileReader fileReader = null;
        FileWriter fileWriter  = null;

        BufferedReader br  = null;
        BufferedWriter bw = null;
        try {
            File file1 = new File("a.txt");
            File file2 = new File("c.txt");

            fileReader = new FileReader(file1);
            fileWriter = new FileWriter(file2);

            br = new BufferedReader(fileReader);
            bw = new BufferedWriter(fileWriter);

            String str="";

            while ((str = br.readLine())!=null){
               bw.write(str+"\n");
            }

        } finally {
            if (br!=null)
            br.close();


            if(bw!=null)
            bw.close();


        }

    }```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值