我正在使用Apache Commons CSV读取CSV文件。该文件在最后一行中具有有关文件本身(生成日期和时间)的信息。
|XXXX |XXXXX|XXXXX|XXXX|
|XXXX |XXXXX|XXXXX|XXXX|
|File generation: 21/01/2019 17.34.00| | | |
因此,在解析文件时,我将其作为记录(显然)。我想知道是否有任何方法可以从解析中摆脱它,并且Apache Commons CSV有任何处理。
这是一个段循环,您不会知道什么时候到达结束直到结束。您有两个选择:
- 不良选项:阅读一次并计算行的数量,然后当您第二次阅读时,您可以在
break
时循环达到(反击)线。 - 好的选择:似乎您的文件是管道界定的,所以您是按行处理行,只需确保
line.trim().spit("|").length() > 1
或在您的情况下做一些工作只要每行的记录数大于1。这将确保您只使用一列不将逻辑应用于行恰好是您的最后一行又称页脚。
取自Apache Commons的示例并修改了Litte
Reader in = new FileReader("path/to/file.csv");
Iterable<CSVRecord> records = CSVFormat.RFC4180.parse(in);
for (CSVRecord record : records) {
//all lines except the last will result greater than 1
if (record.size() > 1){
//do your work here
String columnOne = record.get(0);
String columnTwo = record.get(1);
}
}
apache commons CSV提供了忽略标头的功能(https://commons.apache.org/proper/commons-commons-commons-cmsv/apidocs/org/org/apache/commons/commons/commons/cssv/csvformat。html#withskipheaderrecord-),但不要提供忽略footer
的解决方案。但是,您只需通过手动忽略最后一个记录即可获得所有记录,除了最后一个记录。