使用Java 8 NIO,如何在跳过第一行或头记录的情况下读取文件? [重复]

问题描述 投票:0回答:3

我正在尝试使用 NIO 库在 java 中逐行读取一个大文件。 但这个文件还包含标题...

try (Stream<String> stream = Files.lines(Paths.get(schemaFileDir + File.separator + schemaFileNm))) {
    stream.forEach(s -> sch.addRow(s.toString(), file_delim));
}

如何修改它以跳过文件的第一行? 有什么指示吗..?

java java-8 java.nio.file
3个回答
25
投票

使用

Stream.skip
方法跳过标题行。

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

希望这有帮助!


-1
投票

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

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

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


-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
}
© www.soinside.com 2019 - 2024. All rights reserved.