如何使用Java逐行阅读大文本文件?

问题:

我需要使用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<String> stream = Files.lines(Paths.get(fileName))) {
        stream.forEach(System.out::println);
}

注意:您必须将流放入try-with-resource块,以确保文件已关闭。如果不这样做,GC可能在用尽文件句柄之前清理/关闭文件(或者可能不会)

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to read a large text file line by line using Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 41 = 42