麻烦老师看下,为什么我信息输出了,但是会报错

来源: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();

}


}


}


http://img.mukewang.com/climg/5e71a0e7086d0cea08780428.jpg

写回答

1回答

好帮手慕小脸

2020-03-18

同学你好,报java.io.IOException: Stream Closed的异常:是指流关闭的顺序异常,

流关闭的顺序:建议在关闭流时,先打开的后关闭,后打开的先关闭。

就比如我们进行开门时,从大门打开,然后打开卧室门,进入房间,出去时,在我们进行关门时,就要先关卧室门,再关大门。

具体修改如下:

http://img.mukewang.com/climg/5e71c8af09a1f5c003010189.jpg

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!


0

0 学习 · 11489 问题

查看课程