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ファイルは上記のように項目の位置で内容が決まっているため、項目のレイアウト(順番)に合わせたクラスを用意します。上記のような場合は

  • 名前
  • 年齢
  • 性別

をクラスフィールドとして保有するクラスです。このクラスオブジェクトの内容を項目ごとに取り出し、項目の間にカンマ、行の間に改行を入れて出力して行きます。

 

[PR] Javaで挫折しない学習方法を動画で公開中

実際に書いてみよう

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年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。
JavaやC♯、shellscriptを用いた開発を主に担当し、TechAcademyではJavaコースを担当しています。

 

大石ゆかり

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

田島悠介

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

大石ゆかり

分かりました。ありがとうございます!

オンラインのプログラミングスクールTechAcademyでは、Java講座を開催しています。

JavaやServletの技術を使ってWebアプリケーションの開発を学ぶことができます。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間で習得することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。