【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形式での読み書きになっていますが、他にもフォーマットは用意されています。詳細は以下のドキュメントを参照。


いいなと思ったら応援しよう!