如何以有效的方式获取文件中的行数?Files.lines

2022-08-31 10:58:46

我有一个大文件。它包括大约3.000-20.000行。如何使用Java获取文件中的总行数?


答案 1
BufferedReader reader = new BufferedReader(new FileReader("file.txt"));
int lines = 0;
while (reader.readLine() != null) lines++;
reader.close();

更新:为了回答这里提出的性能问题,我做了一个测量。第一件事:20.000行太少,无法让程序运行一个明显的时间。我创建了一个包含 500 万行的文本文件。这个解决方案(从java开始,没有参数,如-server或-XX-options)需要在我的盒子上大约11秒。与(UNIX命令行工具计算行数)相同,11秒。读取每个字符并查找“\n”的解决方案需要104秒,是9-10倍。wc -l


答案 2

Files.lines

Java 8+使用Files.lines使用NIO有一个很好的捷径。请注意,您必须使用资源试用来关闭流

long lineCount;
try (Stream<String> stream = Files.lines(path, StandardCharsets.UTF_8)) {
  lineCount = stream.count();
}

如果未指定字符编码,则使用的默认编码是 UTF-8。您可以指定备用编码以匹配您的特定数据文件,如上面的示例所示。