版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yuming226/article/details/84202480
缓冲思想
字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,这是加入了数组这样的缓冲区的效果。
BufferedInputStream
BufferedInputStream中读取一个缓冲区(数组),从BufferedInputStream中读取一个字节时,BufferedInputStream会一次性从文件中读取8192个字节,存在缓冲区中并返回程序一个字节。程序再次读取时,就不用找文件了,直接从缓冲区中获取。直到缓冲区中所有的字节都被使用过,才重新从文件中获取另外8192个字节。
构造方法:
BufferedOutputStream
BufferedOutStream也内置了一个缓冲区(数组)。当程序向流中写出字节时,不会直接写到文件,先写到缓冲区中,直到缓冲区写满,BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。
构造方法:
案例演示
package filePackage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
public class Demo11_BufferStream {
public static void main(String[] args) throws Exception {
FileInputStream fis = new FileInputStream("yy.txt");//创建文件输入流对象
BufferedInputStream bfis = new BufferedInputStream(fis);//创建缓冲区fis装饰
FileOutputStream fos = new FileOutputStream("xx.txt");//创建输出流对象
BufferedOutputStream bos = new BufferedOutputStream(fos);//创建缓冲区fos装饰
int b;
while ((b = bfis.read()) != -1) {
bos.write(b);
}
bfis.close();//只关闭装饰后的对象即可
bos.close();
}
}
flush和close方法的区别
(1)flush()方法:用来刷新缓冲区,刷新后可以再次写出。
(2)close()方法:用来关闭流释放资源,如果是带缓冲区的流对象的close()方法,不但会关闭流,还会在关闭流之前刷新缓冲区,关闭后不能再写出。