Buffered缓存流
處理流:
處理流是對一個已經存在的流的連接和封裝,利用的是裝飾設計模式,通過所封裝后的流進行功能調用實現數據讀寫,例如BufferedInputStream,處理流的構造器總是需要帶一個其他流的對象作為參數。一個流經過其他流的多次包裝,稱為流的連接,例如FileInputStream的對象經過BufferedInputStream包裝后,才使用BufferedInputStream的對象去調用讀寫數據的方法,那么這個過程就形成了一個流的連接。
? 讀寫流程示意:
加解密流程示意:
常用的處理流:
FileInputStream和FileOutputStream是基本的流。
?
緩存流:
BufferedInputStream
BufferedOutputStream
?
基本數據流:
DataInputStream
DataOutputStream
?
對象流:
ObjectInputStream
ObjectOutputStream
?
?
緩存流:
緩存流作為緩沖讀寫數據使用,它有一個大小為8k的緩存池,加上緩存流的話在讀取數據的時候每次就會一次性讀取8k,然后讀完了再讀取8k,輸出也是如此,所以能夠優化讀寫上的速度,但是只適合用于單個字節或少量字節的讀取或輸出上的事情上才有效果。因為如果是批量讀取的話,每次讀取的字節數量都比較大,就沒必要多此一舉去使用緩存流了,使用緩存流的話如果不是馬上調用close關閉,就需要調用flush方法來清理緩存。
? 流程示意:
代碼示例:
? 這是一個拷貝文件的代碼示例,用于對比讀取單個字節的情況下,使用緩存流和不使用緩存流的區別,并且對比批量讀取下使用緩存流和不使用緩存流的區別:
單個字節讀取使用緩存流的方式:
運行結果:
單個字節讀取不使用緩存流的方式:
運行結果:
從結果可以看出,緩存流在這種單個字節讀取的速度優化上效果是相當好。
批量讀取下使用緩存流的方式:
運行結果:
批量讀取下不使用緩存流的方式:
運行結果:
? 從結果可以看出,緩存流在這種批量字節讀取的速度優化上效果是相差無幾的,甚至有時候加上緩存流反而會變慢,所以在這種批量讀取的方式上不需要用緩存流。
轉載于:https://blog.51cto.com/zero01/1976622
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的Buffered缓存流的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTML的总结
- 下一篇: 新能源汽车是重点!2023年广东汽车消费