如何使用Java逐行读取大型文本文件?
如何使用Java逐行读取大型文本文件?
一种常见的模式是使用
try {
BufferedReader br = new BufferedReader(new FileReader(file))
String line;
while ((line = br.readLine()) != null) {
// process the line.
}
}
如果假设没有字符编码,则可以更快地读取数据。例如ASCII-7,但它没有太大的区别。您对数据的处理很可能需要更长的时间。
一种不太常见的模式,可以避免line泄漏的范围。
try(BufferedReader br = new BufferedReader(new FileReader(file))) {
for(String line; (line = br.readLine()) != null; ) {
// process the line.
}
// line is not visible here.
}
在Java 8中你可以做到
try { Stream<String> stream = Files.lines(Paths.get(fileName))
stream.forEach(System.out::println);
}
注意:您必须将Stream放在try-with-resource
块中以确保在其上调用#close方法,否则在GC稍后执行它之前,基础文件句柄永远不会关闭。