【发布时间】:2012-12-26 13:13:32
【问题描述】:
我想知道释放文件资源/句柄的最佳/适当方式是什么。
繁体字,
BufferredInputStream stream = null
try{
----
stream = new BufferredInputStream(new FileInputStream());
----
} finally{
if(stream != null){
stream.close()
}
}
文件句柄是通过单独关闭BufferredInputStream.close 来释放还是需要显式调用底层stream(i.e. FileInputStream.close())。
P.S. Javadoc for [FilterOutputStream.close] 方法指定它也将显式关闭底层流。但其他流似乎在文档中没有这个。
[FilterOutputStream.close]: http://docs.oracle.com/javase/1.4.2/docs/api/java/io/FilterOutputStream.html#close%28%29
请指教。提前致谢。
【问题讨论】:
-
您可以通过仅关闭 BufferredInputStream 对象并尝试操作 FileInputStream 并查看是否引发关闭流的任何异常来轻松测试它。我相信它会像您在许多文档示例中看到的那样关闭,底层流是匿名创建的
-
只是一个建议:如果您使用的是 JDK 7,请使用 try-with-resources,它会简单得多。见here。
-
感谢 JavaNewbie_M107 的建议。 Java 7 尚未添加到项目中。很期待