Jsefa - 加载CSV文件时跳过列名

时间:2017-10-12 15:56:18

标签: java csv

我有以下格式的CSV文件

Name,Age
FirstPerson,22
SecondPerson,33

现在我正在尝试使用像这样的jsefa库加载其内容

Deserializer deserializer = CsvIOFactory.createFactory(Person.class).createDeserializer();
deserializer.open(new FileReader(csvName));

while (deserializer.hasNext()) {
    Person person = deserializer.next();
    System.out.println("person = " + person);
}

这会将以下结果打印到控制台

person = Person (name=Name, age=Age)
person = Person (name=FirstPerson, age=22)
person = Person (name=SecondPerson, age=33)

我想知道是否有正确的方法可以跳过输入文件中的第一行。所以我只得到FirstPerson和SecondPerson,但不是名人。

至于现在我只能考虑在while-loop

之前添加这段代码
if (deserializer.hasNext()) {
    deserializer.next();
}

但它看起来不太好。

感谢您的想法!

1 个答案:

答案 0 :(得分:0)

您应该可以使用HeaderAndFooterFilter来实现这一目标。

这样设置你的反序列化器:

CsvConfiguration config = new CsvConfiguration();
config.setLineFilter(new HeaderAndFooterFilter(1, false, true));
Deserializer deserializer = CsvIOFactory.createFactory(config, Person.class)
                                        .createDeserializer();