JavaでのCSV出力の方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaでのCSV出力の方法について解説しています。CSVはComma-Separated Valuesの略で、データを扱うファイルの一種です。JavaでCSVを扱う際の基本の書き方を学びましょう。
TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。
JavaでのCSV出力の方法について解説します。実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。
なお本記事は、TechAcademyのJava講座の内容をもとに作成しています。

今回は、Javaに関する内容だね!

どういう内容でしょうか?

CSV出力の方法について詳しく説明していくね!

お願いします!
ファイルの出入力とは
ファイルの内容を読み取ったり、ファイルに内容の書き出しを行うことをファイルの入出力と言います。
javaでのCSV出力の方法
CSVファイルはカンマ区切りでデータを羅列した形式のファイルです。例えば下記のような内容です。
robin,25,male katty,30,female leo,42,male
全部で3行ありますが
robin,25,male
のような1行でひとつのデータであることを表しています。
データはカンマで区切られており、こちらのサンプルでいうとカンマで区切った1項目めが名前、2項目めが年齢、3項目めが性別となっています。このような内容のファイル出力するプログラムをjava.io.FileWriterクラスを使って実装します。
CSVファイルは上記のように項目の位置で内容が決まっているため、項目のレイアウト(順番)に合わせたクラスを用意します。上記のような場合は
- 名前
- 年齢
- 性別
をクラスフィールドとして保有するクラスです。このクラスオブジェクトの内容を項目ごとに取り出し、項目の間にカンマ、行の間に改行を入れて出力して行きます。
実際に書いてみよう
CSVレイアウトに対応したクラスです
public class Person { private String name; private int age; private String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } /** * @return name */ public String getName() { return name; } /** * @param name セットする name */ public void setName(String name) { this.name = name; } /** * @return age */ public int getAge() { return age; } /** * @param age セットする age */ public void setAge(int age) { this.age = age; } /** * @return gender */ public String getGender() { return gender; } /** * @param gender セットする gender */ public void setGender(String gender) { this.gender = gender; } }
引数付きコンストラクタで各項目の内容を設定できるようにしました。
次に出力処理を行うmainメソッドです。
import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; import java.util.List; public class CsvFileWriterSample { //カンマ private static final String COMMA = ","; //改行 private static final String NEW_LINE= "\r\n"; public static void main(String[] args) { //Personクラスのインスタンスに各値を設定 Person p1 = new Person("robin", 25, "male"); Person p2 = new Person("katty", 30, "female"); Person p3 = new Person("leo", 42, "male"); //リスト化を行う List<Person> persons = new ArrayList(); persons.add(p1); persons.add(p2); persons.add(p3); FileWriter fileWriter = null; try { fileWriter = new FileWriter("person.csv"); //リストの内容を順に処理 for (Person p : persons) { fileWriter.append(p.getName()); fileWriter.append(COMMA); fileWriter.append(String.valueOf(p.getAge())); fileWriter.append(COMMA); fileWriter.append(p.getGender()); fileWriter.append(NEW_LINE); } System.out.println("CSVファイル出力完了"); } catch (Exception e) { e.printStackTrace(); } finally { try { fileWriter.flush(); fileWriter.close(); } catch (IOException e) { e.printStackTrace(); } } } }
Personクラスのインスタンスに各値を設定後にリスト化を行ます。for文のリスト内容を順に処理し、各項目の間にカンマ、ひとつインスタンスを出力するごとに改行を出力します。
実行すると
"CSVファイル出力完了"
がコンソールにされます。また、person.csvという名前のファイルが作成され、その内容は下記のようになります。
robin,25,male katty,30,female leo,42,male
監修してくれたメンター
長屋雅美
独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。 |

内容分かりやすくて良かったです!

ゆかりちゃんも分からないことがあったら質問してね!

分かりました。ありがとうございます!
オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。
JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。
現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。
また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。