在檢視緩衝流的原始碼的時候,我們會發現它在底層建立了乙個8196長度的位元組陣列,利用這個陣列去進行資料的互動.
但是我們完全可以自己建立乙個位元組陣列,對資料進行輸入或輸出,沒必要再加上緩衝流啊?或者說,我們單純使用緩衝流就可以用位元組陣列傳輸資料了,那為什麼又要把這兩個結合起來使用呢?
其實,從結果上來說,兩者結合起來效率其實是更高的.
這裡,我們從原理的角度解釋一下:
緩衝流是在緩衝區中建立了乙個位元組陣列,緩衝區是在記憶體當中的,效率很高,它建立的這個位元組陣列是用來儲存輸出流等傳遞過來的資料的,直到儲存到8196長度時,它才會向外輸出.而輸出流向這個緩衝區傳遞資料時,如果是用位元組陣列進行的,那麼效率就會更高.
總的來說,緩衝流就是在資料傳遞過程中加了一步,輸出流向緩衝流造的緩衝區中傳資料用位元組流更快.緩衝流中建立的那個位元組陣列和其並沒有任何關係.
所以,我們用最快的速度傳資料,最好這麼寫:
bufferedinputstream bufferedinputstream = null;
bufferedoutputstream bufferedoutputstream = null;
try
} catch (ioexception e) finally catch (ioexception e)
}if (bufferedoutputstream != null) catch (ioexception e)
}}```
位元組陣列流
位元組陣列流 bytearrayinputstream 包含乙個內部緩衝區,該緩衝區包含從流中讀取的位元組。內部計數器跟蹤read方法要提供的下乙個位元組。關閉bytearrayinputstream無效。此類中的方法再關閉流後依然可以被呼叫,而不會產生任何ioexception.bytearray...
位元組陣列輸入流和位元組陣列輸出流實現檔案的拷貝
整理思路如下 為什麼要這樣進行copy 我更願意稱它為傳輸 因為這樣以二進位制的形式傳輸檔案,可以實現檔案的遠距離傳輸,即通過這樣可以實現伺服器與使用者之間檔案的傳輸。我們在本地傳送請求時,計算機將請求編碼為二進位制檔案,當傳送到伺服器後,伺服器將二進位制檔案進行解碼,從而實現檔案的傳輸 那麼如何將...
byte陣列轉blob型別 位元組陣列流詳解
bytearrayinputstream和bytearrayoutputstream經常用在需要流和陣列之間轉化的情況 說白了,fileinputstream是把檔案當做資料來源。bytearrayinputstream則是把記憶體中的 某個位元組陣列物件 當做資料來源。位元組陣列流只有位元組流,沒...