如何使用Apache Commons CSV Java忽略CSV文件最后一行中的记录?

时间:2019-03-14 11:33:45

标签: java csv java-8 apache-commons-csv

我正在使用Apache Commons CSV读取CSV文件。该文件的最后一行包含有关文件本身的信息(生成日期和时间)。

True

因此,在解析文件时,我将其作为记录(显然)。 我想知道有没有办法摆脱它的解析,Apache Commons CSV是否有任何规定可以处理它。

2 个答案:

答案 0 :(得分:0)

Apache Commons CSV提供了忽略标头(https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#withSkipHeaderRecord--)的功能,但没有提供忽略footer的解决方案。但是您可以通过手动忽略最后一条记录来简单地获取除最后一条记录以外的所有记录。

答案 1 :(得分:0)

这是一个while循环,直到结束,您才知道何时到达终点。您有两种选择:

  • 错误的选项:读取一次并计算行数,然后 第二次阅读时,您可以break循环播放 到达(counter-1)行。
  • 好的选择:您的文件似乎是用管道分隔的,因此当 您要逐行处理,只需确保 line.trim().spit("|").length() > 1或您的情况下 只要每行的记录数大于1。这将 确保您不会仅将逻辑应用于一行 恰好是您的最后一行,也就是页脚。

示例取自Apache公用处并修改了样例

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);
    } 
}