Java 用の別のオープン ソース CSV API であるSuper CSVは、この機能をすぐに使用できるようにサポートしています。部分読み取りの例を参照してください。
ヘッダー (つまり、最初の行) を使用して、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();
}
}