是否有任何理由在StreamWriter類上調用close方法?爲什麼我必須這樣做?如果我不關閉StreamWriter,我會得到某種未定義的行爲?在Java中使用StreamWriter.close()
0
A
回答
8
假設你在談論java.io.OutputStreamWriter,是的,你應該關閉它,在finally塊中,當你不想再寫更多東西時。這允許底層OutputStream被關閉。如果底層OutputStream是FileOutputStream,它將釋放文件描述符(這是一個有限的OS資源),並允許其他aps讀取文件。如果它是一個SocketOutputSTream,它將向另一方發出信號,表示它不應該期望套接字輸入流有更多的東西。
通常,流和讀者/作者必須始終正確關閉。如果使用Java 7,請使用新的try-with-resources構造來確保它自動爲您完成。
3
操作系統管理文件,並且如果在java文件未關閉,系統資源將丟失。
在Java 7中,你可以使用,無論
try (OutputStreamWriter outWriter = new OuputStreamWriter(outStream, "UTF-8")) {
...
}
沒有close
。 (輸出流和作家執行Closeable
)。
順便說一句@PriestVallon只是試圖讓你制定一個更好/有吸引力的回答你的問題。如你所見,對此的「輕微」迴應可能會被誤解。
1
寫入和讀取流通常涉及os資源的使用,如套接字,文件句柄等。如果您正在寫一個流,您應該關閉它,im命令釋放您可能獲得的資源(這取決於您在流下面使用的實際資源)。有時關閉流式編寫器涉及釋放資源的獨佔分配,或者將臨時數據清除到流中。 有時候關閉是無效的,它取決於你擁有的流的種類,但是界面必須處理所有必須關閉流的情況。
相關問題
- 1. StreamWriter.Flush()和StreamWriter.Close()有什麼區別?
- 2. 在Java中使用
- 3. 在Java中使用
- 4. 使用在Java中
- 5. 在Java中使用
- 6. 在Java中使用
- 7. 「...」在Java中使用?
- 8. 在Java中使用
- 9. 在Java中使用
- 10. 在Java中使用
- 11. 在Java中使用
- 12. 在Java中使用
- 13. 用於在Java中使用
- 14. 在java ee中使用java nio
- 15. 在Java中使用Scala導入Java ClassNotFoundException
- 16. 在JAVA中使用JAVA創建表
- 17. 如何在Java中使用
- 18. 在包中使用java類
- 19. 在Eclipse中使用Akka(Java)
- 20. 在Java中使用分割
- 21. 在Java中使用RecordStore J2ME
- 22. 在Clojure中使用Java庫
- 23. 在java中使用C#dll
- 24. 使用指針在Java中
- 25. 使用枚舉在Java中
- 26. 在html2image中使用css(java)
- 27. 使用和>在Java中
- 28. 使用HTML5在Java中
- 29. 在Java中使用KeyListener
- 30. 在Java中使用indexOf
'streamWriter'哪個包,哪裏? – nullpotent
@smallB:你在問一個不存在的類。我們必須猜測,「streamWriter類」實際上是java.io.OutputStreamWriter(除非你指的是其他類)。 –
#JBNizet由streamWriter我的意思是任何streamWriter。 – smallB