はじめに
JavaでCSVファイルを出力するには、Java標準で提供されているAPIを使うか、CSVファイルを扱うためのライブラリを使うかのどちらかです。
本記事では、Java標準で提供されているAPIを使いCSVファイル出力を行う方法について紹介します。
スポンサーリンク
JavaでCSVファイルを出力する方法
PrintWriterによる書き込み
JavaでCSVファイルを出力するには、書き込みに特化したクラスである「PrintWriter」を使うことで簡単に実装することができます。
次の例では、CsvDataBeanクラスに格納されている情報をCSVファイルに出力しています。今回の例では、文字コードを「Shift-JIS」、改行コードを「CRLF」としています。
[PrintWriterの使用例]
import java.io.IOException; import java.io.PrintWriter; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; public class CsvWriteSample { /*** 文字コード */ private static final String CSV_CHARSET = "Shift-JIS"; /*** 改行コード */ private static final String LINE_FEED_CODE = "\r\n"; /*** 区切り文字(カンマ) */ private static final String DELIMITER_COMMA = ","; public static void main(String[] args) { // CSVファイルに書き込みするためのデータ作成 List<CsvDataBean> list = new ArrayList<CsvDataBean>(); list.add(new CsvDataBean("1","山田一郎","30","東京都渋谷区")); list.add(new CsvDataBean("2","佐藤二郎","25","大阪府大阪市")); list.add(new CsvDataBean("3","鈴木三郎","22","神奈川県横浜市")); // CSVファイル作成 CsvWriteSample csvWriteSample = new CsvWriteSample(); csvWriteSample.writeCsv("C:\\work\\test.txt", list); } private void writeCsv(String file, List<CsvDataBean> list) { try (PrintWriter pw = new PrintWriter(file, Charset.forName(CSV_CHARSET))) { // ヘッダ情報 pw.print("No"); pw.print(DELIMITER_COMMA); pw.print("名前"); pw.print(DELIMITER_COMMA); pw.print("年齢"); pw.print(DELIMITER_COMMA); pw.print("住所"); pw.print(LINE_FEED_CODE); for(CsvDataBean bean : list) { pw.print(bean.getNo()); pw.print(DELIMITER_COMMA); pw.print(bean.getName()); pw.print(DELIMITER_COMMA); pw.print(bean.getAge()); pw.print(DELIMITER_COMMA); pw.print(bean.getAddress()); pw.print(LINE_FEED_CODE); } System.out.println("CSVファイル書き込み完了"); } catch (IOException e) { e.printStackTrace(); } } }

上記の例では、close漏れがないように「try-with-resources」を使用しています。(※try-with-resources文は、処理の終わりで各リソースを確実に閉じてくれる)
[出力されたCSVファイル]
No,名前,年齢,住所
1,山田一郎,30,東京都渋谷区
2,佐藤二郎,25,大阪府大阪市
3,鈴木三郎,22,神奈川県横浜市
[CsvDataBeanクラス]
/** * CSVファイルの内容を格納するBeanクラス */ public class CsvDataBean { /** * コンストラクタ * @param no No * @param name 名前 * @param age 年齢 * @param address 住所 */ public CsvDataBean(String no, String name, String age, String address) { this.no = no; this.name = name; this.age = age; this.address = address; } /** * No */ private String no; /** * 名前 */ private String name; /** * 年齢 */ private String age; /** * 住所 */ private String address; /** * Noの取得 * @return No */ public String getNo() { return no; } /** * Noの設定 * @param no No */ public void setNo(String no) { this.no = no; } /** * 名前の取得 * @return 名前 */ public String getName() { return name; } /** * 名前の設定 * @param name 名前 */ public void setName(String name) { this.name = name; } /** * 年齢の取得 * @return 年齢 */ public String getAge() { return age; } /** * 年齢の設定 * @param age 年齢 */ public void setAge(String age) { this.age = age; } /** * 住所の取得 * @return 住所 */ public String getAddress() { return address; } /** * 住所の設定 * @param address 住所 */ public void setAddress(String address) { this.address = address; } }
helpful
この記事は役に立ちましたか?