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

如何使用Apache Commons CSV java忽略CSV文件最后一行中的记录?,java,csv,java-8,apache-commons-csv,Java,Csv,Java 8,Apache Commons Csv,我正在使用ApacheCommonsCSV来读取CSV文件。文件在最后一行有关于文件本身的信息(生成日期和时间) |XXXX |XXXXX|XXXXX|XXXX| |XXXX |XXXXX|XXXXX|XXXX| |File generation: 21/01/2019 17.34.00| | | | 因此,在解析文件时,我将此作为记录(显然)。 我

我正在使用ApacheCommonsCSV来读取CSV文件。文件在最后一行有关于文件本身的信息(生成日期和时间)

|XXXX                                |XXXXX|XXXXX|XXXX|
|XXXX                                |XXXXX|XXXXX|XXXX|
|File generation: 21/01/2019 17.34.00|     |     |    |
因此,在解析文件时,我将此作为记录(显然)。
我想知道是否有任何方法可以从解析中摆脱它,Apache Commons CSV是否有任何处理它的方法。

Apache Commons CSV提供了一个忽略页眉()的函数,但没有提供忽略页脚的解决方案。但是您可以通过手动忽略最后一条记录来获取除最后一条记录之外的所有记录。

这是一个while循环,在到达终点之前,您不知道何时到达终点。您有两个选择:

  • 错误选项:读一次,数一数行数,然后 当你第二次阅读它时,你可以
    在你阅读时打破循环
    到达(柜台1)线
  • 好的选择:看起来您的文件是管道分隔的,所以 您正在逐行处理,只需确保
    line.trim().spit(“|”).length()>1
    或者在您的情况下做一些工作 只要每行记录数大于1。这将 确保不要将逻辑应用于只有一列的行 这恰好是你的最后一行,也就是页脚
示例取自ApacheCommons并修改了一点

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);
    } 
}
Reader in=newfilereader(“path/to/file.csv”);
Iterable records=CSVFormat.RFC4180.parse(in);
用于(CSVRecord记录:记录){
//除最后一行之外的所有行的结果都将大于1
如果(record.size()>1){
//你在这里工作吗
String columnOne=record.get(0);
String columnTwo=record.get(1);
} 
}

您能分享您所写的代码吗?您可以从CSVParser检查记录.size(),并循环使用size()-1