【Java】apache commons csvでのCSVファイルの読み書き
少し前に書いたコードの覚書。
Javaのバージョンが8なのは、仕事で使っているJavaのバージョンがこれだから。
環境
・Java8
・apache commons csv 1.8
読み込み
// formatはCSVの形式に合わせて指定する
CSVFormat format = CSVFormat.EXCEL;
// 先頭行をヘッダとして読み飛ばす場合指定する
format = format.withFirstRecordAsHeader();
try (FileInputStream fis = new FileInputStream("<CSVファイルパス>");
BufferedReader br = new BufferedReader(new InputStreamReader(fis, "<CSVの文字コード>"));) {
CSVParser parser = format.parse(br);
List<CsvRecord> records = parse.getRecords();
records.forEach((record) -> {
// 読み込んだ行に対して何かしら処理
});
} catch (IOException e) {
e.printStackTrace();
}
書き込み
// 書き込みデータ形式
// ArrayList<String[]> csvData;
// 1行のデータはString[]。
CSVFormat format = CSVFormat.EXCEL;
try (FileWriter fw = new FileWriter("<出力ファイルパス>", false);
CSVPrinter printer = new CSVPrinter(fw, format);) {
printer.printRecords(csvData);
} catch (IOException e) {
e.printStackTrace();
}
CSVFormatの詳細
上記のサンプルでは、Excelで出力したCSV形式での読み書きになっていますが、他にもフォーマットは用意されています。詳細は以下のドキュメントを参照。