緩沖:緩和沖擊,記憶體中預留了一部分空間,這些空間用來緩沖輸入或輸出的資料,叫做緩沖區。
使用緩沖區可以提高程式讀寫效率,因為資料讀寫速度和處理速度不平衡,讀寫速度很慢,如果太多次讀寫資料,會浪費大量的時間。
BufferedInputStream會預先讀取一段原始資料放入緩沖區中,使用read方法時讀取的是緩沖區中的資料,如果讀取的資料超過了緩沖區的資料範圍,BufferedInputStream會重新從原始資料中讀取下一段資料放入緩沖區。
使用緩沖區可以避免大量的磁盤IO。
不用緩沖區的類(如FileInputStream)的read方法是即時讀取,每一次讀取操作都是一次磁盤IO,非常耗時。
使用緩沖區後read方法操作緩沖區中的資料,減少了IO次數,提高效率。
預設緩沖區大小是8K。
private static int DEFAULT_BUFFER_SIZE = 8192;
常用方法 | 描述 |
---|---|
BufferedInputStream(InputStream in) | 構造方法,傳入InputStream對象,預設緩沖區大小 |
BufferedInputStream(InputStream in, int size) | 構造方法,傳入InputStream對象,緩沖區大小設定為size |
int read() | 從流中讀取單個位元組,傳回0~255之間的位元組值,如果到達流末尾且沒有可用位元組,傳回-1 |
int read(byte b[]) | 父類FilterInputStream的方法,從流中讀取最多b.length個位元組,存入數組b中,傳回實際讀取的位元組數,如果到達流末尾且沒有可用位元組,傳回-1 |
int read(byte b[], int off, int len) | 從流中讀取最多len個位元組,從b[off]開始存入數組b中,傳回實際讀取的位元組數,如果到達流末尾且沒有可用位元組,傳回-1 |
long skip(long n) | 從流中跳過n個位元組的資料 |
int available() | 傳回流中剩餘位元組數 |
void mark(int readlimit) | 标記目前位置,設定最多readlimit位元組後失效,失效後不可跳轉到此标記 |
void reset() | 将目前流重新定位到最新标記時的位置 |
boolean markSupported() | 判斷目前流是否支援mark方法 |
void close() | 關閉輸入流,釋放相關資源 |
基類:InputStream
常見IO流:OutputStream、Reader、Writer