我想知道什麼是釋放文件資源/句柄的最佳/合適的方式。正確釋放I/O資源
傳統代碼,
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並查看是否引發了封閉流的任何異常,就可以輕鬆對其進行測試。我相信它會被關閉,正如您在許多doc例子中看到的,底層流是匿名創建的 – giorashc
只是一個建議:如果您使用的是JDK 7,請使用try-with-resources,它更簡單。請參閱[這裏](http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)。 –
感謝您的建議JavaNewbie_M107。 Java 7尚未添加到項目中。期待它 –