ByteArrayOutputStream
和BufferedOutputStream
都通過將數據放入內存中的數組來進行緩衝。所以我的問題是ByteArrayOutputStream和BufferedOutputStream之間的區別
- 這兩者之間有什麼區別。
- 當使用
ByteArrayOutputStream
以及何時使用BufferedOutputStream
有人能幫助我在上面兩個問題,因爲我對這個困惑。
ByteArrayOutputStream
和BufferedOutputStream
都通過將數據放入內存中的數組來進行緩衝。所以我的問題是ByteArrayOutputStream和BufferedOutputStream之間的區別
ByteArrayOutputStream
以及何時使用BufferedOutputStream
有人能幫助我在上面兩個問題,因爲我對這個困惑。
只要看看的Javadoc:
此類實現,其中的數據被寫入一個字節數組的輸出流。
該類實現緩衝的輸出流。通過設置這樣的輸出流,應用程序可以將字節寫入底層輸出流,而不必爲寫入的每個字節調用底層系統。
所以,那些實際上有兩個非常不同的東西:
這就是這一切!
如果您想體驗不同的行爲:創建一個寫入文件的緩衝區和一個數組。然後只是繼續推送字節到每一個。陣列一會在某個點引起內存問題,另一個可能不會停止,直到所有磁盤空間用完。
ByteArrayOutputStream
將字節寫入內存中的字節數組。不適用於任何其他目標,如文件或網絡套接字。寫入數據後,您可以通過調用toByteArray()
來獲取字節數組。
BufferedOutputStream
包裝另一個,底層OutputStream
並提供該底層流的緩衝,以使I/O操作更有效。基礎流可以是任何種類的OutputStream
,例如寫入文件或網絡套接字的流。
爲什麼您可能想要使用緩衝:將大塊數據寫入文件系統比逐字節寫入效率更高。如果您的程序需要寫入許多小塊數據,首先將這些小塊收集到緩衝區中,然後將整個緩衝區一次寫入磁盤會更有效。這是BufferedOutputStream
自動爲你做的。
這個問題是完全不同的,它說「在圍繞ByteArrayOutputStream包裝BufferedOutputStream而不是僅僅使用ByteArrrayOutputStream本身有什麼優勢嗎?」我讀了這個問題,但沒有什麼請再次檢查 –
只有在interner上發現的差異是BufferedOutputStream將數據寫入另一個流。 ByteArrayOutputStream將數據寫入字節數組。 –
請你能解釋一下嗎? –