Buffered串流

Buffered

Buffered是指把讀取或寫入的資料,保存在記憶體緩衝區中。

BufferedReader與BufferedWriter

建構子

參數只能接收Reader的子類別(處理字元的串流)。

1
2
BufferedReader(Reader in)
BufferedWriter(Writer out)

readLine()

提供一列一列讀取的功能,讀完資料沒有資料可以讀會傳回null。

1
2
// Reads a line of text
String readLine()

內部使用緩衝buffer功能,提高讀取效率。

1
2
3
4
5
6
7
8
  BufferedReader bufferedReader = null;
  try {
    bufferedReader = new BufferedReader(new FileReader("/Users/cici/testc/file_test"));
    String line = null;
    while((line = bufferedReader.readLine()) != null) {
      System.out.println(line);
    }
  }
測試程式

java程式設計

write()與newLine()

write()不會自動換行,需使用BufferedWriter.newLine()才會換行。

1
2
3
4
5
6
7
8
9
10
11
12
  BufferedWriter bufferedWriter = null;
  try {
    bufferedWriter = new BufferedWriter(new FileWriter("/Users/cici/testc/file_test"));
    // 寫一行
    bufferedWriter.write("測試程式");
    // 換行
    bufferedWriter.newLine();
    // 寫一行
    bufferedWriter.write("java程式設計");
    // 換行
    bufferedWriter.newLine();
  }
測試程式
java程式設計

BufferedInputStream與BufferedOutputStream

位元組資料都存在記憶體緩衝區,對緩衝區進行讀取與寫入。

以下是檔案拷貝程式碼。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  BufferedInputStream buff_in = null;
  BufferedOutputStream buff_out = null;
  try {
    buff_in = new BufferedInputStream(new FileInputStream("/Users/cici/testc/1.png"));
    buff_out = new BufferedOutputStream(new FileOutputStream("/Users/cici/testc/3.png"));
    // 每次迴圈讀到的byte數
    int len = 0;
    // 建立buffer
    byte[] buff = new byte[1024];
    while ((len = buff_in.read(buff)) != -1) {
      // 寫入
      buff_out.write(buff, 0, len);
    }
  } catch (IOException e) {
    e.printStackTrace();
  } finally {
    try {
      if (buff_in != null)
        buff_in.close();
      if (buff_out != null)
        buff_out.close();
    } catch (IOException ex) {
      ex.printStackTrace();
    }
  }

results matching ""

    No results matching ""