使用Open CSV阅读器跳过第一行

San*_*and 15 java opencsv

这是我目前使用的线路

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

想要跳过包含标题的csv的第一行.我不想使用任何分隔符,除了默认构造函数中已有的默认一个逗号(,).在参数化构造函数中,有一个跳过否的选项.行但是如何处理构造函数的第2和第3个参数.

CSVReader csvReader = new CSVReader(new InputStreamReader(Reader reader, char c, char c1, int index);
Run Code Online (Sandbox Code Playgroud)

- 谢谢

小智 27

CSVReader类的这个构造函数将在读取文件时跳过csv的第1行.

CSVReader reader = new CSVReader(new FileReader(file), ',', '\'', 1);
Run Code Online (Sandbox Code Playgroud)

  • +1正确答案,但大多数CSV文件不使用双引号?所以它将是`new CSVReader(new StringReader(csvText),CSVReader.DEFAULT_SEPARATOR,CSVReader.DEFAULT_QUOTE_CHARACTER,1);`而不是. (5认同)
  • 这已被弃用,您可以使用 => `CSVReader csvReader = new CSVReaderBuilder(new FileReader(csvFileName)).withSkipLines(1).build()` (3认同)
  • 在版本2.3中,*DEFAULT_SEPARATOR*和*DEFAULT_QUOTE_CHARACTER*现在位于*CSVParser*类中. (2认同)
  • 仅供参考,但此构造函数在 4.0 版中已弃用。不知道如何在不使用不推荐使用的方法的情况下实现相同的功能。 (2认同)

小智 12

我发现这个问题和回答很有帮助,我想扩展一下Christophe Roussy的评论.在最新的opencsv(撰写本文时为2.3)实际的代码行是:

new CSVReader( new StringReader(csvText), CSVParser.DEFAULT_SEPARATOR,
               CSVParser.DEFAULT_QUOTE_CHARACTER, 1);
Run Code Online (Sandbox Code Playgroud)

请注意,它使用CSVParser而不是CSVReader.


daz*_*ito 11

至少从版本3.8开始,您可以使用CSVReaderBuilder并将其设置为跳过第一行.

例:

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


Vis*_*rai 5

与最新版本的 opencsv 版本一起使用 -

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