IO流 之 缓冲流(字节缓冲流和字符缓冲流)

在这里插入图片描述
缓冲流对原始流进行了包装,以提高原始流读写数据的性能。

字节缓冲流(BufferedInputStream和BufferedOutputStream)

在这里插入图片描述
字节缓冲流在内存中提供了一个默认为8kb的区域,用于缓冲,当流开始时,先读取一个8kb的内容缓存到内存,然后再对其进行操作,速度会变快,因为字节缓冲流利用缓冲区将数据暂时存储起来,减少了频繁地进行读写操作的次数,从而提高了读写的效率。相较于直接读写字节流,使用字节缓冲流可以减少系统调用次数,提升性能。就是直接操作硬盘的次数变少了。

在这里插入图片描述

而缓存的大小也是可以自定义的 但默认时8kb

下面时一个拷贝图片的代码示范:

package day0927;
import java.io.*;
public class demo9 {
    public static void main(String[] args) {
        try (
                FileInputStream  in = new FileInputStream("D:\\asdf.jpg");
                //将低级流放入高级流
                InputStream bin = new BufferedInputStream(in);
                FileOutputStream out = new FileOutputStream("E:\\asdf.jpg");
                OutputStream bout = new BufferedOutputStream(out)
        ){
            byte[] buffer = new byte[1024];
            int b;
            while ((b = bin.read(buffer))!= -1){
                bout.write(buffer,0,b);
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

字符缓冲流(BufferedInputStream和BufferedOutputStream)

在这里插入图片描述
字符缓冲流提供了一个8kb的默认缓冲区域,先将字符读取8kb到内存,再在内存中进行操作,然后再对其进行操作,速度会变快,因为字符缓冲流利用缓冲区将数据暂时存储起来,减少了频繁地进行读写操作的次数,从而提高了读写的效率。相较于直接读写字节流,使用字符缓冲流可以减少系统调用次数,提升性能。就是直接操作硬盘的次数变少了。
在这里插入图片描述
在这里插入图片描述
下面提供字符缓冲流复制txt文件的代码示范:

package day0927;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;
public class demo10 {
    public static void main(String[] args) {
        try (
                FileReader fileReader = new FileReader("src\\a.txt");
                BufferedReader br = new BufferedReader(fileReader);
                FileWriter fileWriter = new FileWriter("src\\d.txt");
                BufferedWriter bw = new BufferedWriter(fileWriter);
        ){
            String b;
            //readLine()一行一行读取文本,如没有内容后将返回null
            while ((b = br.readLine()) != null){
                System.out.println(b);
                bw.write(b);
                //newLine()换行方法
                bw.newLine();
            }
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值