麻烦老师看下,为什么我信息输出了,但是会报错
来源:3-16 自由编程
小飞88886632
2020-03-18 12:17:52
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class BufferdeDemo1 {
public static void main(String[] args) {
// 将100000个字符分别写入文件one.txt和two.txt ,two用缓冲文件输入输出流写。对比用时的多少
// 创建one.txt文件
File f1 = new File("one.txt");
if (!f1.exists()) {
try {
f1.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 创建two.txt文件
File f2 = new File("two.txt");
if (!f2.exists()) {
try {
f2.createNewFile();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// 不用缓冲流将100000个字符写入one.txt
try {
FileOutputStream fos = new FileOutputStream("one.txt");
long l1Start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
fos.write(i);
}
long l1End = System.currentTimeMillis();
System.out.println(f1.getName() + "不适用缓冲流来写用时为:" + (l1End - l1Start));
fos.close();
// 使用缓冲流
FileOutputStream fos1 = new FileOutputStream("two.txt");
BufferedOutputStream bos1 = new BufferedOutputStream(fos1);
FileInputStream fis1=new FileInputStream("two.txt");
BufferedInputStream bis1=new BufferedInputStream(fis1);
long l2Start = System.currentTimeMillis();
for (int i = 0; i < 100000; i++) {
bos1.write(i);
}
long l2End = System.currentTimeMillis();
System.out.println(f2.getName() + "使用缓冲流来写用时为:" + (l2End - l2Start) + "\n节省时间:"
+ ((l2End - l2Start) - (l1End - l1Start)) + "ms");
fos1.close();
//bos1.flush();
bos1.close();
fis1.close();
bis1.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
1回答
同学你好,报java.io.IOException: Stream Closed的异常:是指流关闭的顺序异常,
流关闭的顺序:建议在关闭流时,先打开的后关闭,后打开的先关闭。
就比如我们进行开门时,从大门打开,然后打开卧室门,进入房间,出去时,在我们进行关门时,就要先关卧室门,再关大门。
具体修改如下:
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
相似问题