Java 缓冲流本身并不具有 IO 流的读取与写入功能,只是在别的流(节点流或其他处理 流)上加上缓冲功能提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流(包 装流
Java 缓冲流本身并不具有 IO 流的读取与写入功能,只是在别的流(节点流或其他处理 流)上加上缓冲功能提高效率,就像是把别的流包装起来一样,因此缓冲流是一种处理流(包 装流)。
当对文件或者其他数据源进行频繁的读写操作时,效率比较低,这时如果使用缓冲流就 能够更高效的读写信息。因为缓冲流是先将数据缓存起来,然后当缓存区存满后或者手动刷 新时再一次性的读取到程序或写入目的地。 因此,缓冲流还是很重要的,我们在 IO 操作时记得加上缓冲流来提升性能。 BufferedInputStream 和 BufferedOutputStream 这两个流是缓冲字节流,通过内部缓存数 组来提高操作流的效率
import java.io.*;
/**
* @Author yqq
* @Date 2021/11/12 21:20
* @Version 1.0
*/
public class FileStreamBuffedDemo {
public static void main(String[] args) {
FileInputStream fis = null;
FileOutputStream fos = null;
BufferedInputStream bis =null;
BufferedOutputStream bos = null;
try {
fis = new FileInputStream("E:/pic/2.png");
bis = new BufferedInputStream(fis);
fos = new FileOutputStream("E:/pic/2p.png");
bos = new BufferedOutputStream(fos);
//缓冲区中,byte数组长度默认为8192
int temp = 0;
while ((temp = bis.read())!=-1){
bos.write(temp);
bos.flush();
}
}catch (Exception e){
e.printStackTrace();
}finally {
//关闭顺序,后开先关
try {
if(bis!=null){
bis.close();
}
if(fis!=null){
fis.close();
}
if(bos!=null){
bos.close();
}
if(fos!=null){
fos.close();
}
}catch (Exception e){
e.printStackTrace();
}
}
}
}