Super CSV是另一个用于 Java 的开源 CSV API,开箱即用地支持此功能。请参阅部分阅读示例。
它使用标题(即第一行)来确定要映射到 bean 的字段 - 因此将能够很好地读取您的两个文件。
如果您在 bean 中使用其他类型(日期、整数等)而不仅仅是字符串,那么 Super CSV 可以使用它的单元处理器API 为您完成所有必需的转换/转换。
例如,以下代码将读取您的两个文件,但仅填充 CSV 文件中存在的字段。
ICsvBeanReader beanReader = null;
try {
beanReader = new CsvBeanReader(new FileReader(CSV_FILENAME),
CsvPreference.STANDARD_PREFERENCE);
// header is used to map CSV column -> field in bean
final String[] header = beanReader.getHeader(true);
Data data;
while( (data = beanReader.read(Data.class, header)) != null ) {
System.out.println(String.format("id=%s, name=%s, phone=%s",
data.getId(), data.getName(), data.getPhone()));
}
}
finally {
if( beanReader != null ) {
beanReader.close();
}
}