JustForPerfect 2015-08-13 05:35 采纳率: 50%
浏览 4649
已采纳

关于Java输入输出流关闭的问题。。。

在学java时老师一直强调要用完流要关闭流,但有一个问题我一直没清楚,就是装饰流该怎么个关闭,通常我们是这样关闭的:
...
FileWriter fw = new FileWriter(fileName);
BufferedWriter bw = new BufferedWriter(fw);
...
fw.close();
bw.close();
...
但我感觉太累赘,既然fw被bw装饰了,bw关闭的同时是否fw也被关闭呢?
或者fw被关闭了的话,bw是否同时也被关闭,毕竟它们用的是一个流通道。

假如fw,bw都需要被关闭的话,它们关闭的顺序有要求吗?就是关闭的先后
顺序改变会有影响吗。

我还见到一只情况,如果bw是这样创建的:
...
BufferedWriter bw = new BufferedWriter(new FileWriter(fileName));
...
这样我们就取不到fw了,怎么办?

  • 写回答

3条回答

  • moqiguzhu 2015-08-13 08:01
    关注
    • 如果流是被嵌套起来的话,只需要关闭最外层的流就可以了,被修饰的流会自动关闭
    • 在你给的第一个例子中,只要调用bw.close()就可以了,第二个例子调用bw.close()
    • 可以看一下这个链接 http://www.javapractices.com/topic/TopicAction.do?Id=8
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?