Пропустить первую строку, используя Open CSV reader

Вот строка, которую я использую в настоящее время

File booleanTopicFile;
// booleanTopicFile is csv file uploaded from form
CSVReader csvReader = new CSVReader(new InputStreamReader(new FileInputStream(booleanTopicFile), "UTF-8"));

Хотите пропустить первую строку csv, которая содержит заголовки. Я не хочу использовать какой-либо разделитель, кроме как по умолчанию одной запятой (,), которая уже доступна в конструкторе по умолчанию. В параметризованном конструкторе есть опция пропустить no. строк, но как иметь дело со вторым и третьим параметром конструктора.

CSVReader csvReader = new CSVReader(new InputStreamReader(Reader reader, char c, char c1, int index);

- Благодаря

Ответ 1

Этот конструктор класса CSVReader пропустит первую строку csv во время чтения файла.

CSVReader reader = new CSVReader(new FileReader(file), ',', '\'', 1);

Ответ 2

Я нашел этот вопрос и ответ полезным, я хотел бы расширить комментарий Кристофа Русси. В последнем opencsv (2.3 на момент написания этой статьи) Фактическая строка кода:

new CSVReader( new StringReader(csvText), CSVParser.DEFAULT_SEPARATOR,
               CSVParser.DEFAULT_QUOTE_CHARACTER, 1);

Обратите внимание, что вместо CSVReader используется CSVParser.

Ответ 3

По крайней мере, начиная с версии 3.8, вы можете использовать CSVReaderBuilder и установить его, чтобы пропустить первую строку.

Пример:

CSVReader reader = new CSVReaderBuilder(inputStreamReader)
                .withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
                // Skip the header
                .withSkipLines(1)
                .build();

Ответ 4

с использованием последней версии opencsv -

CSVReader csvReader = new CSVReaderBuilder(new FileReader("book.csv")).withSkipLines(1).build()

Ответ 5

Вы также можете использовать withFilter:

watFileCsvBeans = new CsvToBeanBuilder<ClassType>(isr)
  .withType(ClassType.class)
  .withIgnoreLeadingWhiteSpace(true)
  // CsvToBeanFilter with a custom allowLine implementation
  .withFilter(line -> !line[0].equals("skipme"))
  .build()
  .parse();