我正在阅读这样一个大文件:
try (Stream<String> stream = Files.lines(Paths.get(fileName))) {
stream.skip(1).forEach(Main::parseLine);
} catch (IOException e) {
e.printStackTrace();
}
解析行看起来像这样:
private static void parseLine(String line) {
System.out.println(line);
}
我想做的也是跟踪我正在阅读的当前行,并让 parseLine
看起来像这样:
private static void parseLine(String line, int idx) {
System.out.println(line);
}
我该怎么做?
最佳答案
将行收集到列表中,然后使用 IntStream.range
或显式 for
循环调用您的方法,将元素与索引一起传递:
List<String> result = stream.skip(1).collect(Collectors.toList());
IntStream.range(0, result.size())
.forEach(i -> parseLine(result.get(i), i));
另一种选择是使用 LineNumberReader API。
关于java - 使用 Stream 读取文件并跟踪当前索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50781945/