字节流、缓冲流,这些调用close方法的先后顺序有关系吗

字节流、缓冲流,这些调用close方法的先后顺序有关系吗

我按老师这样写,会抛出IOException,然后我这样写又可以,先关闭了缓冲读、写流

br.close();

bw.close();

fis.close();

fos.close();

isr.close();

osw.close();http://img1.sycdn.imooc.com//climg/5e5e69da099df07b08070644.jpg

不然异常如下

java.io.IOException: Stream closed

at sun.nio.cs.StreamEncoder.ensureOpen(StreamEncoder.java:45)

at sun.nio.cs.StreamEncoder.write(StreamEncoder.java:118)

at java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)

at java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)

at java.io.BufferedWriter.close(BufferedWriter.java:265)

at com.imooc.file.ReaderBufferedDemo1.main(ReaderBufferedDemo1.java:43)


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,非常抱歉,老师将顺序写跌倒了,正确顺序如下:

http://img1.sycdn.imooc.com//climg/5e5f19010987037102610161.jpg

http://img1.sycdn.imooc.com//climg/5e5f190c09ac151a02370162.jpg

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

好帮手慕小脸 2020-03-04 10:31:20

同学你好,流的关闭顺序是有要求。如下图举例:

在输入流中,BufferedReader中引用了InputStreamReader,在InputStreamReader中引用了FileInputStream,这里关闭的顺序为br,isr,fis。

在输出流中,BufferedWriter中引用了OutputStreamWriter,在OutputStreamWriter中引用了FileOuputStream,这里关闭的顺序为bw,osw,fos。

http://img1.sycdn.imooc.com//climg/5e5f12cc0974197611210262.jpg如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 橘猫铲屎官 #1
    fis.close(); isr.close(); br.close(); fos.close(); osw.close(); bw.close(); 老师我这样关闭的时候,还是抛出IOException ,有点懵
    2020-03-04 10:44:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师