2015-10-15 52 views

回答

3

不,它不會做任何事情,但InputStreamabstract類,其中close不是抽象的(它實現java.io.Closeable),它有一個空的機構。 InputStream的實施者可以選擇性地覆蓋該方法。 FileInputStream關閉文件輸入流並釋放任何系統資源,其中ByteInputStream什麼也不做。

1

close()方法InputStream什麼都不做。 close()的方法InputStream的子類可能做些什麼。

+0

所以我們應該總是關閉(InputStream),因爲它可能會爲某些事情做點事情,而且在一般情況下不會受到影響? – arney

+0

@arney一個人應該總是關閉所有的資源,因爲最壞的情況是它不能運行,但最多隻能防止難以發現的錯誤。 – Kayaman

+1

我寧願說,如果你不關閉它,它一般會傷害你。從Java 1.7開始,這可以通過

try(InputStream in = new XxxInputStream(...) { } catch(Exception e) {}
自動處理,它實現了
AutoCloseable
,這與提供的流一樣。 –

0

正如@Kayaman所說,InputStream是一個抽象類,close方法沒有在那裏實現。如果你很好奇,你可以看到這個link,它可以讓你關閉來自GrepCode的openjdk 8u40-b25的java.io.FileInputStream方法。

+0

沒有關閉的方法實施,但有一個空的身體 –

+0

對,我的錯,我錯誤地表達了 – malaguna

相關問題