當使用BufferedOutputStream
時,我認爲直到我們使用flush纔會發生真正的輸出? BufferedInputStream
怎麼樣,有沖洗的方法嗎?任何人都可以解釋BufferedInputStream的原理嗎?
2
A
回答
1
沒有沖洗方法。刷新方法僅用於輸出。
0
這個想法是,BufferedInputStream
以相對較大的塊向底層流詢問數據。這種想法是,請求大塊數據比向操作系統少量數據請求更有效。
沒有沖洗的方法,因爲它不需要(沒有寫,所以沒有什麼可刷新)。
3
Flushing意味着您將緩衝區的完整內容寫入磁盤。這隻有在你編寫到的磁盤時纔有意義,但是當你正在從讀取時。
有些人可能會在閱讀上下文中使用「刷新緩衝區」,當他們想要明確緩衝區出於某種原因。
但我會致電寫入操作沖洗和讀取操作清除,以避免混淆。
在學習基礎知識時,術語和準確的講話很重要。嘗試獲得這種習慣。它會幫助你很多:)
0
每當你需要讀取更多的數據時,有一個從操作系統的read()。沒有相同的flush()。
MemoryMappedByteBuffer中最接近的位置,您可以在其中觸發需要加載的區域。
3
BufferedOutputStream中的實際輸出發生在內部緩衝區已滿或沖洗時。
使用BufferedInputStream沒有刷新,因爲它沒有意義。
它所做的就是讀取其內部緩衝區中的大量來自底層流的數據,這被認爲是昂貴的調用,然後在您請求時有效地爲您提供小部分數據。只要讀取了一個緩衝區數據,它就會自動從底層流中爲您讀取下一個緩衝區。所以,它的操作對你來說是完全透明的。
0
如果您有選擇,請始終使用BufferedInputStream,因爲它爲您帶來了此線程中已列出的優勢,並且還實現了.mark()和.reset() - 允許您「重複使用」流的方法(有點)。
相關問題
- 1. 任何人都可以向我解釋HABTM原理的工作原理嗎?
- 2. 任何人都可以解釋OAuth嗎?
- 3. 任何人都可以解釋這種除法算法的工作原理嗎?
- 4. 任何人都可以用C++解釋事件處理嗎?
- 5. 任何人都可以解釋我StandardScaler?
- 6. 任何人都可以解釋「視場」
- 7. 任何人都可以解釋輸出
- 8. 任何人都可以解釋以下語句的輸出嗎?
- 9. 任何人都可以解釋這個列表的理解?
- 10. 任何人都可以解釋下面的代碼嗎?
- 11. 任何人都可以解釋下面的代碼嗎?
- 12. 任何人都可以解釋默認括號的含義嗎?
- 13. 任何人都可以解釋我的這段代碼嗎?
- 14. 任何人都可以解釋一下微軟的CDN嗎?
- 15. 任何人都可以解釋python的相對導入嗎?
- 16. 任何人都可以解釋這個程序的輸出嗎?
- 17. local_variables的行爲 - 任何人都可以解釋嗎?
- 18. 任何人都可以解釋下面的PHP代碼嗎?
- 19. 任何人都可以解釋這段代碼的輸出嗎?
- 20. 任何人都可以解釋Jmeter的Non GUI Mode命令嗎?
- 21. 任何人都可以將WMI解釋爲舊的SNMP chap嗎?
- 22. 任何人都可以解釋我這個代碼行嗎?
- 23. 任何人都可以在C中解釋這個結構嗎?
- 24. 任何人都可以解釋這種語法嗎?
- 25. 任何人都可以解釋UriMatcher(Android SDK)嗎?
- 26. 任何人都可以向Entity Framework生命週期解釋嗎?
- 27. 任何人都可以解釋我這個javax swing方法嗎?
- 28. Lua任何人都可以解釋這是什麼嗎?
- 29. Javascript:任何人都可以解釋我這段代碼嗎?
- 30. C編程,任何人都可以解釋這一點嗎?
來吧夥計們,讓他有些鬆懈。當我開始編程時,我無法理解客戶端和服務器之間的區別。這個問題並沒有那麼糟糕。 – Raku 2012-01-12 13:47:36