IO流(緩衝流)
阿新 • • 發佈:2022-04-07
IO流(緩衝流)
一,前言
掌握緩衝流的概念,掌握位元組字元緩衝流的使用,掌握字元流讀行方法,換行方法。
二,概念
快取流也稱為高效流,或者高階流。緩衝流自帶緩衝區,可以提高原始位元組流,字元流讀寫資料的效能。
BufferedInputStream,BufferedOutputStream,BufferedReader,BufferedWriter
三,位元組緩衝輸入流(BufferedInputStream)
在建立 BufferedInputStream 時,會建立一個內部緩衝區陣列。緩衝區用以減少頻繁的IO操作,提高程式的效能。
1.構造方法
BufferedInputStream(InputStream in): 建立一個 BufferedInputStream 並儲存其引數,即輸入流 in,以便將來使用。 BufferedInputStream(InputStream in, int size): 建立具有指定緩衝區大小的 BufferedInputStream 並儲存其引數,即輸入流 in,以便將來使用。
2.常用方法
void close():
關閉此輸入流並釋放與該流關聯的所有系統資源。
int read(byte[] b):
從輸入流中讀取一定數量的位元組,並將其儲存在緩衝區陣列 b 中。
四,位元組緩衝輸出流(BufferedOutputStream)
在建立 BufferedInputStream 時,會建立一個內部緩衝區陣列。緩衝區減少IO操作以提高效能。
1.構造方法
BufferedOutputStream(OutputStream out): 建立一個新的緩衝輸出流,以將資料寫入指定的底層輸出流。 BufferedOutputStream(OutputStream out, int size): 建立一個新的緩衝輸出流,以便以指定的緩衝區大小將資料寫入指定的底層輸出流。
2.常用方法
void close():
關閉此檔案輸出流並釋放與此流相關聯的任何系統資源。
void write(byte[] b,int off,int len):
將 b.length個位元組從指定的位元組陣列寫入此檔案輸出流。
void flush():
重新整理此輸出流並強制任何緩衝的輸出位元組被寫出。
五,字元緩衝輸入流(BufferedReader)
從字元輸入流中讀取文字,緩衝各個字元,從而實現字元、陣列和行的高效讀取。
1.構造方法
BufferedReader(Reader in): 建立一個使用預設大小輸入緩衝區的緩衝字元輸入流。 BufferedReader(Reader in, int sz): 建立一個使用指定大小輸入緩衝區的緩衝字元輸入流。
2.常用方法
String readLine():
讀取一個文字行。
六,字元緩衝輸出流(BufferedWriter)
BufferedWriter使用裝飾器模式,對Writer類的子類提供快取機制。
1.構造方法
BufferedWriter(Writer out):
建立一個使用預設大小輸出緩衝區的緩衝字元輸出流。
BufferedWriter(Writer out, int sz):
建立一個使用給定大小輸出緩衝區的新緩衝字元輸出流。
2.常用方法
void newLine():
寫入一個行分隔符。
七,字元緩衝流的操作示例
例:
public static void main(String[] args) {
//建立緩衝流
File file = new File("E:/aaaa.txt");
File f = new File("C:\\Users\\29854\\Desktop\\aaa.txt");
BufferedReader bd = null;
BufferedWriter bw = null;
try {
bd = new BufferedReader(new FileReader(file));
bw = new BufferedWriter(new FileWriter(f,true));
//讀寫資料
String str = null;
while ((str = bd.readLine()) != null) {
bw.write(str);
bw.newLine();
bw.flush();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
//關流
if (bd != null) {
try {
bd.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (bw != null) {
try {
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
八,附加(緩衝區的概念)
某些情況下,如果一個程式頻繁地操作一個資源(如檔案或資料庫),則效能會很低;
為了提升效能,就可以將一部分資料暫時讀入到記憶體的一塊區域之中,以後直接從此區域中讀取資料即可,因為讀取記憶體速度會比較快,這樣可以提升程式的效能;