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