位元組處理流(緩衝流)
package cn。jd。io;
import java。io。BufferedInputStream;
import java。io。File;
import java。io。FileInputStream;
import java。io。FileNotFoundException;
import java。io。IOException;
import java。io。InputStream;
public class BufferedTest01 {
public static void main(String[] args) {
//1。建立源
File alt="位元組處理流(緩衝流)" data-isLoading="0" src="/static/img/blank.gif" data-src=new File(“1。txt”);
//選擇流
InputStream is=null;
BufferedInputStream bis=null; //位元組流加上處理流只加了兩行程式碼
try {
is=new FileInputStream(src);
bis=new BufferedInputStream(is);
byte[] flush=new byte[1024];
int len=-1;
while((len=is。read(flush))!=-1) {
String str=new String(flush,0,len);
System。out。println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e。printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e。printStackTrace();
}finally {
try {
if(is!=null) {
bis。close(); //這裡寫成bis釋放,它會通知is釋放的,本質其實還是is的釋放,因為檔案時儲存在硬碟上的
}
} catch (IOException e) {
// TODO Auto-generated catch block
e。printStackTrace();
}
}
}
}
裝飾流也就是我們所說的處理流
在IO中位元組處理流就相當於是一個提高效能的裝飾品。
這裡的是位元組緩衝流,是對位元組流的緩衝,緩衝流的作用就是提高了我們操作(讀寫)的效能,因為IO的操作是影響程式效能的一個瓶頸,所以它內部設定了一個緩衝區(用來提高我們讀寫的操作,不用我們頻繁的讀寫硬碟(將資料一次性打包到這個緩衝區域))
這個緩衝流只需要套在我們的位元組流上
節點流始終在第一線,處理流是給節點流做了包裝,提高了效能。
釋放的順序是從裡到外釋放,但是我們其實只要釋放最外層的BufferInputStream就可以了,它會通知記憶體釋放的(這是我舉的一個例子)
這個緩衝區的大小預設是8k的
https://www。zhihu。com/video/1228775099224522752
上一篇:口腔正畸醫生真的不會拔牙嗎?