BufferedReader
介紹
BufferedReader
類是其他 Reader
類的包裝器,有兩個主要用途:
-
一個
BufferedReader
為包裹的Reader
提供緩衝。這允許應用程式一次讀取一個字元而不會產生過多的 I / O 開銷。 -
BufferedReader
提供一次讀取一行文字的功能。
使用 BufferedReader 的基礎知識
使用 BufferedReader
的正常模式如下。首先,你獲得要從中讀取字元的 Reader
。接下來,你將例項化一個包裹 Reader
的 BufferedReader
。然後你讀取字元資料。最後你關閉 BufferedReader
,關閉包裹的`讀者。例如:
File someFile = new File(...);
int aCount = 0;
try (FileReader fr = new FileReader(someFile);
BufferedReader br = new BufferedReader(fr)) {
// Count the number of 'a' characters.
int ch;
while ((ch = br.read()) != -1) {
if (ch == 'a') {
aCount++;
}
}
System.out.println("There are " + aCount + " 'a' characters in " + someFile);
}
你可以將此模式應用於任何 Reader
筆記:
-
我們使用 Java 7(或更高版本) try-with-resources 確保底層讀者始終關閉。這可以避免潛在的資源洩漏。在早期版本的 Java 中,你將明確關閉
finally
塊中的BufferedReader
。 -
try
區塊內的程式碼幾乎與我們直接從FileReader
中讀取的程式碼相同。實際上,BufferedReader
的功能與它所包含的Reader
的功能完全相同。不同之處在於此版本的效率更高。
BufferedReader 緩衝區大小
BufferedReader.readLine()
方法
示例:將檔案的所有行讀入 List
這是通過獲取檔案中的每一行並將其新增到 List<String>
中來完成的。然後返回該列表:
public List<String> getAllLines(String filename) throws IOException {
List<String> lines = new ArrayList<String>();
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
String line = null;
while ((line = reader.readLine) != null) {
lines.add(line);
}
}
return lines;
}
Java 8 使用 lines()
方法提供了一種更簡潔的方法:
public List<String> getAllLines(String filename) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(filename))) {
return br.lines().collect(Collectors.toList());
}
return Collections.empty();
}