BufferedInputStream類相比InputStream類,提高了輸入效率,增加了輸入緩沖區的功能
不帶緩沖的操作,每讀一個字節就要寫入一個字節,由於涉及磁盤的IO操作相比內存的操作要慢很多,所以不帶緩沖的流效率很低
帶緩沖的流,可以一次讀很多字節,但不向磁盤中寫入,只是先放到內存里。等湊夠了緩沖區大小的時候一次性寫入磁盤,這種方式可以減少磁盤操作次數,速度就會提高很多
InputStream流是指將字節序列從外設或外存傳遞到應用程序的流
BufferedInputStream流是指讀取數據時,數據首先保存進入緩沖區,其后的操作直接在緩沖區中完成。
繼承關系是這樣的:
Java.lang.Object
Java.io.InputStrean
Java.io.FilterInputStream
Java.io.BufferedInputStream
FileInputStream是字節流,BufferedInputStream是字節緩沖流,使用BufferedInputStream讀資源比FileInputStream讀取資源的效率高(BufferedInputStream的read方法會讀取盡可能多的字節),且FileInputStream對象的read方法會出現阻塞;
BufferedInputStream比FileInputStream多了一個緩沖區,執行read時先從緩沖區讀取,當緩沖區數據讀完時再把緩沖區填滿。
當每次讀取的數據量很小時,FileInputStream每次都是從硬盤讀入,而BufferedInputStream大部分是從緩沖區讀入。讀取內存速度比讀取硬盤速度快得多,因此BufferedInputStream效率高。
BufferedInputStream的默認緩沖區大小是8192字節。當每次讀取數據量接近或遠超這個值時,兩者效率就沒有明顯差別了。