java - bufferedinputstream也需要指定一个数组长度呀?并没有什么用呀?
PHP中文网
PHP中文网 2017-04-17 17:48:10
0
3
696

他与fileinputstream 的区别是什么呀?他不是自带缓冲区吗?为什么还需要指定一个byte数组?

PHP中文网
PHP中文网

认证0级讲师

全部回覆(3)
阿神

它的快取和你自己的快取不是一個概念。大概流程如下。

使用不含快取的inputstream時

每次你讀取時,系統執行讀取操作把資料讀出來,你指定讀一個字節那就讀一個字節,指定一個數組那就讀一個數組的,你的程式和資料的讀取效率有非常大的關係。

而使用bufferedinputstream時,是這樣的bufferedinputstream时,是这样的

当你创建bufferedinputstream 當你建立bufferedinputstream,後他會
立即去讀資料然後放到jvm管理的記憶體裡,每次你讀取時,他不會再去系統中讀取,會去記憶體讀取資料,之後再判斷記憶體中剩下的還多不,不多就再由它去指揮系統讀取操作,不論你是讀一個字節還是一個數組,系統都
不一定會去操作硬碟。

你的程式和資料讀取的效率關聯就非常微小了。


換個角度想,如果你用不帶buffer的流,打開文件然後立即關閉,系統
不會有任何資料調用,關閉會很快執行。 而你用帶buffer的流打開文件,哪怕沒讀取就立即執行關閉了,這個關閉也不會立即執行,而且系

統也已經把一部分數據讀取的內存了

,會比用不帶buffer的效率低。

🎜當然應該沒人會閒的無聊到創建流之後不讀取就關閉吧? 🎜
PHPzhong

緩衝和使用數組接收兩者沒有關係呀,並沒有說有了緩衝就不用數組接收內容了呀。

Peter_Zhu

因為希望能重複使用這個byte[],否則在面對大數據流IO傳輸時,你會發現YGC開心得不要不要的

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板