2013-04-01 30 views
1

在Java中,當我們關閉像Connection這樣的資源時,FileInputStream和FileOutputStream與將這些對象實例設置爲null的方式不同?即在這兩種情況下,這些對象都有資格進行垃圾收集。那麼爲這些類提供close方法的目的是什麼?關閉FileInputStream並將其設置爲null的區別

+1

許多在線教程/文章之一會回答這個問題。 –

+0

'#close()'不是垃圾收集。 http://docs.oracle.com/javase/7/docs/api/java/io/Closeable.html#close() –

+0

我想,如果你不關閉它,那麼如果你嘗試寫再次打開在GC之前,您可能無法打開它,直到GC發生,因爲操作系統認爲該文件已打開。 – chuthan20

回答

0

IO類的close方法通常用於執行清理任務,例如,關閉文件處理程序,沖洗和關閉套接字。這些清理任務純粹與分配無關,GC本身無法處理它們。

此外,一基準設定null顯式聲明該對象將不再被使用是不是推薦的編碼實踐。當物體不再可用時,GC將自動處理這些情況。明確的null設置只會混亂你的源代碼。

相關問題