使用 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 框架来解析文件,从一开始就避免所有这些麻烦。
我正在尝试使用 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 框架来解析文件,从一开始就避免所有这些麻烦。