迅速な対応に感謝します。Thihara の推奨に基づいて、OPENCSV を機能させることができました (Bean Mapping に貢献してくれた Glen Smith と Kyle Miller に感謝します) OPENCSV からopencsv -2.3.jar を取得します
私のような他の人に利益をもたらすために、完全なソースを投稿しています。
入力ファイル
/**
* Input File: acct_os.txt
*
* <pre>
* 12345|ABC Company|120.45
* 34567|XYZ Company|45.00
* 99999|MNC Bank|67.00
*/
/**
* Bind File to a POJO
*
* @param inputFile
* @param delim
* @throws FileNotFoundException
*/
public void bindFileToPojo(String inputFile, char delim) throws FileNotFoundException {
System.out.println("\n===== Reading to a POJO\n");
ColumnPositionMappingStrategy<TestCustomerBean> strat = new ColumnPositionMappingStrategy<TestCustomerBean>();
strat.setType(TestCustomerBean.class);
/**
* the fields to bind do in your JavaBean
*/
String[] columns = new String[] { "acct", "customer", "balance" };
strat.setColumnMapping(columns);
CsvToBean<TestCustomerBean> csv = new CsvToBean<TestCustomerBean>();
/**
* Read file contents to list using CSVReader
*/
List<TestCustomerBean> list = csv.parse(strat, new CSVReader(new FileReader(inputFile), delim));
/**
* Display column mapping
*/
displayColumnMapping(strat.getColumnMapping());
for (TestCustomerBean bean : list) {
System.out.println("account: ["
+ bean.getAcct()
+ "] customer: ["
+ bean.getCustomer()
+ "] balance: ["
+ bean.getBalance()
+ "]");
}
}
/**
* Display column mapping
*
* @param columns
*/
private void displayColumnMapping(String[] columns) {
for (String column : columns) {
System.out.println("Column Mapping-->" + column);
}
}
TestCustomerBean (getter/setter 省略)
private String acct;
private String customer;
private Double balance;
出力は次のようになります
===== POJO への読み取り
列マッピング-->acct
列マッピング-->customer
列マッピング-->残高
account: [12345] customer: [ABC Company] balance: [120.45]
account: [34567] customer: [XYZ Company] balance: [45.0]
口座: [99999] 顧客: [MNC Bank] 残高: [67.0]