Java输入输出流中,为什么按下面fos、bos、fis、bis顺序关闭就会报错,按bos,fos,bis,fis顺序就 不会报错呢?
来源:3-14 缓冲流案例
童真模式启动
2021-06-16 23:45:00
package com.imooc.file;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class MyBufferedDemo {
public static void main(String[] args) {
// 文件拷贝
try {
FileInputStream fis = new FileInputStream("happy.gif");
BufferedInputStream bis=new BufferedInputStream(fis);
FileOutputStream fos = new FileOutputStream("happycopy2.gif");
BufferedOutputStream bos=new BufferedOutputStream(fos);
long startTime=System.currentTimeMillis();
int n = 0;
byte[] b = new byte[1024];
while ((n = bis.read(b)) != -1) {
bos.write(b, 0, n);
}
//bos.flush();
long endTime=System.currentTimeMillis();
System.out.println(endTime-startTime);
fos.close();
bos.close();
fis.close();
bis.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1回答
同学你好,一般流的关闭顺序建议先打开的后关闭,后打开的先关闭。就比如我们进行开门时,从大门打开,然后打开卧室门,进入房间,出去时,在我们进行关门时,就要先关卧室门,再关大门。所以这里同学按照顺序进行关闭就可以

祝学习愉快~
相似问题