Java中IO各种流的先后关闭顺序

本文详细解析了Java中IO流的正确关闭顺序,强调了处理流与节点流之间的依赖关系,指出应先关闭处理流再关闭节点流,且处理流在关闭时会自动调用节点流的关闭方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java中IO各种流的先后关闭顺序

2017年06月06日 15:43:49 马大头 阅读数:3858更多

个人分类: I/OJava

还是先看API

 

voidclose() 
          Closes this stream and releases any system resources associated with it.

 

close

void close()
           throws IOException

Closes this stream and releases any system resources associated with it. If the stream is already closed then invoking this method has no effect.

 

Throws:

IOException - if an I/O error occurs

 

关闭该流并释放与之关联的所有资源。在关闭该流后,再调用 read()、ready()、mark()、reset() 或 skip() 将抛出 IOException。关闭以前关闭的流无效。 

[html] view plain copy

  1. public void close() throws IOException {  
  2.     synchronized (lock) {  
  3.         if (in == null)  
  4.         return;  
  5.         in.close();  
  6.         in = null;  
  7.         cb = null;  
  8.     }  
  9. }  

一般情况下是:先打开的后关闭,后打开的先关闭

另一种情况:看依赖关系,如果流a依赖流b,应该先关闭流a,再关闭流b

例如处理流a依赖节点流b,应该先关闭处理流a,再关闭节点流b

当然完全可以只关闭处理流,不用关闭节点流。处理流关闭的时候,会调用其处理的节点流的关闭方法

如果将节点流关闭以后再关闭处理流,会抛出IO异常

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值