回答
平齊()寫入緩衝器向目的地的內容,並且使緩衝器空用於進一步的數據存儲,但它不會永久關閉該流。這意味着您仍然可以向流中寫入更多數據。
但是close()會永久關閉流。如果您想進一步寫入一些數據,則必須重新打開該數據流並將數據添加到現有數據中。
flush()
只是可以確保任何緩衝的數據寫入到磁盤(在這種情況下 - 更普遍,通過任何IO通道你使用刷新)。之後您仍然可以寫入流(或作者)。
close()
刷新數據並指示沒有任何數據。它關閉任何文件句柄,套接字或其他。您無法再寫入流(或作者)。
注意,如果沒有調用flush()
數據可以仍然被寫入有關的IO通道 - 它只是一些數據可能進行緩衝。
close()
一般要求flush()
爲好,但它最近已經向我指出,在一些JDK的實現,通過沖洗截至收盤一部分拋出的異常吞下:(
flush()
刷新緩衝區的內容到目的地。你可以再次寫東西到流close()
刷新內容到目的地,並關閉該流close()
後,你可以不寫什麼了
Jon Skeet在15秒前寫道)) – shift66 2012-02-14 06:26:31
flush()
:。要刷新輸出流,使用void flush()
實現方法具d的DataOutputStream
類。此方法內部調用flush()
基礎OutputStream
類的方法,該方法強制將任何緩衝的輸出字節寫入流中。
close()
:它通常關閉Stream,connection,socket。
- 1. Vim中的文件>關閉和關閉之間的區別
- 2. 瀏覽器控件中刷新和導航功能的區別?
- 3. 關閉和延續之間的區別
- 4. 關閉和lambda之間的區別?
- 5. 在java中寫入文件 - 關閉或刷新
- 6. javaScript中關閉模塊和關閉模塊之後'()'或'(otherModule)'之間的區別
- 7. 關閉vb.net中的文件編寫器
- 8. 自定義和默認關閉事件之間的區別
- 9. 關閉和緊急事件之間的區別
- 10. RL_ARM的TCP模式關閉和中止之間的區別
- 11. 使用虛擬功能和重新定義之間的區別
- 12. 舊的和新的Unix編譯器之間的區別?
- 13. 關閉後刷新自動完成新的瀏覽器功能
- 14. 功能和發生器之間的區別?
- 15. Java中的文件和DocumentFile之間的區別
- 16. Qt QMainWindow用戶關閉和系統中止之間的區別
- 17. 檢測刷新和重新加載之間的區別
- 18. 行刷新和行更新之間的區別?
- 19. 功能類型之間的區別
- 20. 功能參數之間的區別
- 21. 機器學習中的參數,功能和類別之間的區別
- 22. 模塊和封閉之間的區別
- 23. Java中= +和+ =之間的區別?
- 24. Java中this.variable和variable之間的區別
- 25. java中Executor和ExecutorCompletionService之間的區別
- 26. 在Ruby中的文件和::文件之間的區別?
- 27. SecKeychainAddGenericPassword中的serviceName和accountName之間的功能區別
- 28. * .php和* .html文件之間的區別
- 29. X3D和X3DV文件之間的區別
- 30. Blob和文件之間的區別
當使用BufferedWriter(或BufferedReader)時,我們不必擔心flush() - BufferedWriter在內部刷新,而「write()」在緩衝區已滿時刷新。 – enator 2017-10-26 13:12:51
但最後__如果緩衝區既不是空的,也不是full__,並且我們想把最後一部分寫入磁盤(這幾乎總是需要的),__我們必須明確/手動地清空(flush)它,這是非常必要的。 – FaithReaper 2018-01-22 14:43:13