我需要使用Java逐行读取大约5-6 GB的大文本文件。
我怎样才能快速做到这一点?
常见的模式是使用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 stream = Files.lines(Paths.get(fileName))) {
stream.forEach(System.out::println);
}
注意:你必须把Stream放在一个try-with-
resource块中,以确保对它调用#close方法,否则基本的文件句柄永远不会被关闭,直到GC完成之后。
看看这个博客:The buffer size may be specified, or the default size may be used. The
default is large enough for most purposes.// Open the file
FileInputStream fstream = new FileInputStream("textfile.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String strLine;
//Read File Line By Line
while ((strLine = br.readLine()) != null) {
// Print the content on the console
System.out.println (strLine);
}
//Close the input stream
br.close();
未经作者同意,本文严禁转载,违者必究!