BufferedInputStream是一個帶有緩沖區的輸入流,通常使用它可以提高我們的讀取效率,現在我們看下BufferedInputStream的實現原理:
BufferedInputStream內部有一個緩沖區,默認大小為8M,每次調用read方法的時候,它首先嘗試從緩沖區里讀取數據,若讀取失敗(緩沖區無可讀數據),則選擇從物理數據源(譬如文件)讀取新數據(這里會嘗試盡可能讀取多的字節)放入到緩沖區中,最后再將緩沖區中的內容部分或全部返回給用戶.由於從緩沖區里讀取數據遠比直接從物理數據源(譬如文件)讀取速度快,所以BufferedInputStream的效率很高!
BufferedInputStream內部有一個緩沖區,默認大小為8M,每次調用read方法的時候,它首先嘗試從緩沖區里讀取數據,若讀取失敗(緩沖區無可讀數據),則選擇從物理數據源(譬如文件)讀取新數據(這里會嘗試盡可能讀取多的字節)放入到緩沖區中,最后再將緩沖區中的內容部分或全部返回給用戶.由於從緩沖區里讀取數據遠比直接從物理數據源(譬如文件)讀取速度快,所以BufferedInputStream的效率很高!
******************************************************
不帶緩沖的操作,每讀一個字節就要寫入一個字節,由於涉及磁盤的IO操作相比內存的操作要慢很多,所以不帶緩沖的流效率很低。帶緩沖的流,可以一次讀很多字節,但不向磁盤中寫入,只是先放到內存里。等湊夠了緩沖區大小的時候一次性寫入磁盤,這種方式可以減少磁盤操作次數,速度就會提高很多!這就是inputstream與bufferedinputstream的區別