日期:2014-05-20  浏览次数:20870 次

java资源关闭的问题
装饰者模式
InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader br = new BufferedReader(isr);

是否2个Reader的close()都要调用?
like:
try {
  isr.close();
  br.close();
}

如果2个都要调用,假设2个都可能会抛出IOException,放在一个try块里面是不是不妥?

------解决方案--------------------
br.close();
只需要这个调用就可以了。

可以进源码里面看,这个close方法里面会调用isr.close()的。
------解决方案--------------------
像这样一层套一层的情况,一般只要关闭最外层的就可以了