使用 Java 8 NIO,如何在跳过第一行或 header 记录的同时读取文件?

Using Java 8 NIO, how can I read a file while skipping the first line or header record?

我正在尝试使用 NIO 库在 java 中逐行读取一个大文件。 但是这个文件还包含 headers... try (Stream<String> stream = Files.lines(Paths.get(schemaFileDir+File.separator+schemaFileNm))){ stream.forEach(s->sch.addRow(s.toString(),file_delim)); }

如何修改它以跳过文件的第一行? 任何指针..?

使用Stream.skip方法跳过header行。

try (Stream<String> stream = Files.lines(
          Paths.get(
             schemaFileDir+File.separator+schemaFileNm)).skip(1)){
 // ----
}

希望对您有所帮助!

您可以选择尝试使用 Iterator

Iterator<String> iter = Files.lines(Paths.get(schemaFileDir+File.separator+schemaFileNm)).iterator();
while (iter.hasNext()) {
    iter.next();                  // discard 1st line
    sch.addRow(iter.next().toString(),file_delim);  // process
}

问题是:你为什么要这么做?

我猜您正在阅读 CSV 文件。在那种情况下,您很快就会 运行 遇到其他问题,例如 我如何区分字符串和数字?我如何处理双引号、分号或逗号在“”内?

我的建议是通过使用 CSV reader 框架来解析文件,从一开始就避免所有这些麻烦。