JavaでのCSV出力の方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaでのCSV出力の方法について解説しています。CSVはComma-Separated Valuesの略で、データを扱うファイルの一種です。JavaでCSVを扱う際の基本の書き方を学びましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
JavaでのCSV出力の方法について解説します。実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。
そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
なお本記事は、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= "rn"; 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やServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。