Как игнорировать запись в последней строке файла CSV, используя Apache Commons CSV Java? - PullRequest
0 голосов
/ 14 марта 2019

Я использую Apache Commons CSV для чтения файла CSV. Файл содержит информацию о самом файле (дату и время создания) в последней строке.

|XXXX                                |XXXXX|XXXXX|XXXX|
|XXXX                                |XXXXX|XXXXX|XXXX|
|File generation: 21/01/2019 17.34.00|     |     |    |

Итак, при разборе файла я получаю это как запись (очевидно). Мне интересно, есть ли способ избавиться от него при разборе, и есть ли в Apache Commons CSV какие-либо меры для его решения.

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Это цикл по времени, и вы не будете знать, когда дойдете до конца, пока не дойдете до конца. У вас есть два варианта:

  • Плохой вариант: прочитайте его один раз и посчитайте количество строк, а затем когда вы читаете его во второй раз, вы можете break цикл, когда вы линия достижения (счетчик-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);
    } 
}
0 голосов
/ 14 марта 2019

Apache Commons CSV предоставляет функцию игнорирования заголовка (https://commons.apache.org/proper/commons-csv/apidocs/org/apache/commons/csv/CSVFormat.html#withSkipHeaderRecord--),, но не предлагает решения для игнорирования footer. Но вы можете просто получить все записи, кроме последней, вручную игнорируя последняя запись.

...