我有以下格式的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();
}
但它看起来不太好。
感谢您的想法!
答案 0 :(得分:0)
您应该可以使用HeaderAndFooterFilter
来实现这一目标。
这样设置你的反序列化器:
CsvConfiguration config = new CsvConfiguration();
config.setLineFilter(new HeaderAndFooterFilter(1, false, true));
Deserializer deserializer = CsvIOFactory.createFactory(config, Person.class)
.createDeserializer();