Java 使用jackson dataformat csv获取csv的标题

Java 使用jackson dataformat csv获取csv的标题,java,csv,jackson,Java,Csv,Jackson,我使用的是jackson数据格式csv库。我想要解析CSV文件。我有以下代码: CsvMapper csvMapper = new CsvMapper(); CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader(); List<Map<String, String>> csvRows; try { MappingIt

我使用的是
jackson数据格式csv
库。我想要解析
CSV
文件。我有以下代码:

 CsvMapper csvMapper = new CsvMapper();
        CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader();
        List<Map<String, String>> csvRows;
        try {
            MappingIterator<Map<String, String>> it = csvMapper.readerFor(Map.class)
                    .with(csvSchema.withColumnSeparator(';'))
                    .readValues(file.getInputStream());
            csvRows = it.readAll();
        } catch (Exception ex) {
            log.error("Unable to read csv document: ", ex);
        }
但是,它是空对象。我也是这样做的:

csvSchema.column(0)
我得到一个错误:

Method threw 'java.lang.ArrayIndexOutOfBoundsException' exception.

显然,columns对象是空的。为什么?如何从
CSV
获取列名数组?

如果您需要列名,可以将它们作为
映射迭代器返回的
映射中的键:

CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader();

MappingIterator<Map<String, String>> it = csvMapper.readerFor(Map.class)
        .with(csvSchema.withColumnSeparator(','))
        .readValues(csvFile);

System.out.println("Column names: " + it.next().keySet());
CsvMapper CsvMapper=new CsvMapper();
CsvSchema CsvSchema=csvMapper.typedSchemaFor(Map.class).withHeader();
MappingIterator it=csvMapper.reader(Map.class)
.with(csvSchema.with列分隔符(','))
.readValues(csvFile);
System.out.println(“列名:+it.next().keySet());

在从
MappingIterator

一个有效的例子:

CsvSchema schema=(CsvSchema)objectMappingIterator.getParser().getSchema();
迭代器迭代器=schema.Iterator();
while(iterator.hasNext()){
CsvSchema.Column next=迭代器.next();
next.getName();
}
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = csvMapper.typedSchemaFor(Map.class).withHeader();

MappingIterator<Map<String, String>> it = csvMapper.readerFor(Map.class)
        .with(csvSchema.withColumnSeparator(','))
        .readValues(csvFile);

System.out.println("Column names: " + it.next().keySet());