字节缓冲流(高效)

字节缓冲输入流 BufferedInputStream
字节缓冲输出流 BufferedOutputStream
内部自带缓冲区的功能 无论是输入还是输出
效率比其他低效字节流要快很多

1.字节缓冲输入流 BufferedInputStream

  1. int read();<br /> 一次读一个字节<br /> int read(byte[] bs)<br /> 一次读一个字节数组<br /> int read(byte[] bs,int offset,int len)<br /> 一次读字节数组一部分![image.png](https://cdn.nlark.com/yuque/0/2022/png/28889470/1655304824457-25f1a949-c4c6-4200-95cf-ab7354fcef8f.png#clientId=u29b67703-2f6c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=145&id=udcef1a37&margin=%5Bobject%20Object%5D&name=image.png&originHeight=181&originWidth=723&originalType=binary&ratio=1&rotation=0&showTitle=false&size=24377&status=done&style=none&taskId=ufac5fd92-300e-479c-a68a-f4282c1d255&title=&width=578.4)

2. 字节缓冲输出流 BufferedOutputStream

    ① int write(int ch)<br />            一次输出一个字节<br />        ② int write(byte[] bs)<br />            一次输出一个字节数组<br />        ③int write(byte[] bs,offset,len)<br />            一次输出一个字节数组一部分![image.png](https://cdn.nlark.com/yuque/0/2022/png/28889470/1655305198286-c622f8a8-5534-4c06-ab06-4b1d160f0b05.png#clientId=u29b67703-2f6c-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=173&id=u33456cc4&margin=%5Bobject%20Object%5D&name=image.png&originHeight=216&originWidth=996&originalType=binary&ratio=1&rotation=0&showTitle=false&size=18204&status=done&style=none&taskId=ua2c0aa5c-256e-462d-aff3-6e6219a27f8&title=&width=796.8)

字节缓冲流构造器要传入一个 低效的字节流对象
缓冲流输出流默认输出时 内容不会马上输出到文件
必须调用 flush或者close方法 需要刷新缓冲区 才能把数据输出出去

flush方法 表示刷新缓冲区 把缓冲区里面的数据 写出去
close关闭流 会自动刷新一次缓冲区 看看还有没有数据需要写出去
一旦缓冲区数据写满了 也没有调用flush 那么也会自动刷新一次

如果是缓冲流 那么只要关闭缓冲流本身就行 内部的低效流不需要关闭
因为关闭外部流 就相当于关闭内部的

字节缓冲输出流的构造器 不止传一个低效字节流对象
还可以传入一个int 表示 声明内部缓冲区大小
实际开发 一般不用改 默认是 8192 8kb 够用