这是我目前正在使用的行
File booleanTopicFile;
// booleanTopicFile is csv file uploaded from form
CSVReader csvReader = new CSVReader(new InputStreamReader(new FileInputStream(booleanTopicFile), "UTF-8"));
想要跳过包含标题的csv的第一行。 我不想使用任何分隔符,除了默认构造函数中已有的默认一个逗号(,)。 在参数化构造函数中,有一个跳过否的选项。行但是如何处理构造函数的第2和第3个参数。
CSVReader csvReader = new CSVReader(new InputStreamReader(Reader reader, char c, char c1, int index);
- 感谢
答案 0 :(得分:27)
CSVReader类的构造函数将在读取文件时跳过csv的第1行。
CSVReader reader = new CSVReader(new FileReader(file), ',', '\'', 1);
答案 1 :(得分:12)
我发现此问题和回复很有帮助,我想扩展Christophe Roussy's comment。在最新的opencsv(撰写本文时为2.3)实际的代码行是:
new CSVReader( new StringReader(csvText), CSVParser.DEFAULT_SEPARATOR,
CSVParser.DEFAULT_QUOTE_CHARACTER, 1);
请注意,它使用CSVParser而不是CSVReader。
答案 2 :(得分:10)
至少从版本3.8开始,您可以使用CSVReaderBuilder
并将其设置为跳过第一行。
示例:
CSVReader reader = new CSVReaderBuilder(inputStreamReader)
.withFieldAsNull(CSVReaderNullFieldIndicator.EMPTY_SEPARATORS)
// Skip the header
.withSkipLines(1)
.build();
答案 3 :(得分:0)
使用最新版本的opencsv版本-
CSVReader csvReader = new CSVReaderBuilder(new FileReader("book.csv")).withSkipLines(1).build()
答案 4 :(得分:0)
您也可以使用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();