CSVファイル作成のユーティリティメソッドを作ったのでメモとして残します。
引数には出力クラス、ファイルパス、追記フラグ、クォートフラグ(ダブルクォーテーションのありなし)、改行コードを用意しました。
/**
* CSVファイル書込み
*
* @param <T> CSV出力クラス
* @param filePath ファイルパス
* @param csvList CSV出力リスト
* @param appendFlg 追記フラグ
* @param quoteFlg クォートフラグ
* @param lineSeparator 改行コード
*/
@SuppressWarnings("unchecked")
public static <T> void writeCsv(String filePath, List<T> csvList, Boolean appendFlg, Boolean quoteFlg,
String lineSeparator) {
Class<T> clazz = (Class<T>) csvList.get(0).getClass();
CsvMapper csvMapper = new CsvMapper();
CsvSchema csvSchema = null;
if (appendFlg) {
csvSchema = csvMapper.schemaFor(clazz).withLineSeparator(lineSeparator);
} else {
csvSchema = csvMapper.schemaFor(clazz).withHeader().withLineSeparator(lineSeparator);
}
csvMapper.configure(CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS, quoteFlg);
try {
// アップロードファイルをバイト値に変換
byte[] bytes = csvMapper.writer(csvSchema).writeValueAsString(csvList)
.getBytes("MS932");
FileOutputStream stream = new FileOutputStream(filePath, appendFlg);
// ファイルに書き込み
stream.write(bytes);
// ファイルクローズ
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}