バナー画像

JavaプログラムでCSVファイルを読み込む処理は、業務系のシステムを作っているプログラマーをはじめとして意外と触れる機会の多いものです。

本記事では、JavaでCSVファイルを読み込む方法をなるべく簡単にご紹介していきたいと思います。

JavaでCSVファイルを読み込む方法

JavaでCSVファイルを読み込む際に利用されるのが「FileInputStream」クラスです。

または「FileReader」クラスを用いてCSVの読み込みを行うことも可能です。

基本的にはテキストファイルと同じようにcsvファイルを読み込んだ後に、カンマ部分で分割してデータの取得を行います。

本記事では、比較的初心者にも分かりやすく効率も良い、ストリーム形式で読み込む「FileInputStream」を紹介したいと思います。

JavaのFileInputStreamでCSVファイルを読み込んでみよう

Javaから提供されている「FileInputStream」クラスを利用してCSVファイルの読み込み処理を行う方法を、サンプルコードを交えながらご紹介していきたいと思います。

CSVファイルを用意する

まず今回Javaプログラムで読み込むようのサンプルCSVファイルを用意します。

「sample1.csv」というファイル名で内容は下記の通りとなります。

name,age,address
test1,20,Tokyo
test2,30,Osaka
test3,40,Okinawa

1行目にそれぞれのカンマ毎のカテゴリとして「名前(name)」「年齢(age)」「住所(address)」を設定し、2行目以降に各ユーザー情報を持ったcsvファイルを想定したサンプルです。

メインとなるJavaファイルを作成する

次にメインとなるJavaファイルの内容が下記の通りとなります。

import java.io.*;
import java.util.*;

public class Main {

  public static void main(String[] args) {

      // BufferedReaderはtry処理の最後に必ずclose処理を入れる必要があるため、最初に初期化処理を行っています
      BufferedReader buffReader = null;

      try {
        // sample1.csvファイルを読み込みます
        FileInputStream fileInput = new FileInputStream("sample1.csv"); // ※1
        // バイトストリームをテキスト形式に変換
        InputStreamReader inputStream = new InputStreamReader(fileInput); // ※2
        // テキスト形式のファイルを読み込む
        buffReader = new BufferedReader(inputStream); // ※3

        String currentContent;
        int row = 0;
        String[] arrayColumnName = null;
        while((currentContent = buffReader.readLine()) != null) { // ※4
          System.out.println(row + "行目のデータ");
          if(row == 0) { // ※5
            arrayColumnName = currentContent.split(",");
          } else {
            int arrayNumber = 0;
            String[] arrayColumnData = currentContent.split(","); // ※6
            for(String columnName : arrayColumnName) { ※7
              // カラム名と該当行のデータをコンソール出力
              System.out.println(columnName + " = " + arrayColumnData[arrayNumber]); ※8
              arrayNumber++;
            }

          }
          row++;
        }
      } catch(Exception ex) {
        ex.printStackTrace();
      } finally {
        try{
          buffReader.close(); ※9
        } catch(Exception ex) {
          ex.printStackTrace();
        }
      }
  }

}

処理の流れを大まかに説明しておきます。

ソースコード上のコメントと合わせて、どの行でなんの処理が行われているのか把握しておきましょう。

CSVファイルの読み込み

まず※1の行で、「FileInputStream」を利用して「sample1.csv」ファイルを読み込みます。

この時点ではテキストファイルとして認識出来ないため、※2の行で「InputStreamReader」を用いてテキスト形式に変換します。

次に変換したテキストファイルを※3の行で「BufferedReader」を用いてまとめて読み込んでいます。

ファイルの内容を1行ずつ抽出する

「BufferedReader」クラスには「readLine」メソッドが提供されており、1行ずつテキストファイルを処理していくことが可能となっています。

※4の行では上述した「readLine」メソッドを用いて、1行のデータを変数「currentContent」に格納しています。

ファイルが終わりに達している場合には、「null」が変数に格納されるため、「while」文を利用しファイルの終わりまで中身のデータを出力する処理を記述しています。

※5の行では、読み込んだ行が最初の行かどうかを判定しています。

通常、CSVファイルで定義されているデータは1行目にカラム名を指定し、2行目から実際のデータが入力されているケースがほとんどです。

サンプルのCSVファイルを見ていただいても同様に1行目がカラム名の定義、2行目以降から実際のデータが設定されていることをご確認頂けます。

抽出した1行のデータを加工して処理を実施する

※6の行では、抽出した1行のデータを更にカンマで区切り配列データとして変数「arrayColumnData」に格納しています。

※7の行で先頭行のカラム名の回数分ループ処理を行い、※8の行で「カラム名 = 該当行のデータ」として出力する処理を記述しています。

ポテパンダの一言メモ

※9で行なっているBufferedReaderインスタンスのclose処理はエラーが起きても起きなくても必ず実行する必要があるので、Finally句の中で宣言しています。

さいごに:JavaでCSVファイルの読み込みは簡単に行える

本記事では、JavaプログラムでのCSVファイルの読み込み方について、なるべく簡単に行える方法でご紹介してきました。

Javaからは今回ご紹介したように「FileInputStream」や「BufferedReader」など便利なクラスが提供されているため、一見難しそうに思えるCSVファイルの読み込みもサンプルのように比較的簡単に行えます。

何かと利用する機会も多いCSVファイルとの連携処理ですので、ぜひ一度ご自身でサンプルコードを編集しながら理解を深めてみてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。