JavaでCSVファイルを読み込む方法を現役エンジニアが解説【初心者向け】
初心者向けにJavaでCSVファイルを読み込む方法について解説しています。CSVファイルはComma Separated Valueの略で、カンマで区切られたデータの入ったファイルです。JavaでCSVを利用する方法をサンプルを見ながら学習しましょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
この記事では、JavaでCSVファイルを読み込む方法について解説します。実際にプログラムを書いて説明しているので、ぜひ理解しておきましょう。
そもそもJavaについてよく分からないという方は、Javaとは何なのか解説した記事を読むとさらに理解が深まります。
 
なお本記事は、TechAcademyのオンラインブートキャンプJava講座の内容をもとに作成しています。

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

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

CSVファイルを読み込む方法について詳しく説明していくね!

お願いします!
CSVファイルとは
データをカンマ(“,”)で区切った形式のファイルのことです。
データの授受でよく使われる形式で、エクセルソフトでも保存時にcsv形式を指定することで作成することができます。
内容は下記のように記述し、拡張子は.csvで保存します。
no,name,age,gender,bloodtype
1,robby,45,M,A
2,katty,21,F,B
3,leo,23,M,AB
4,alice,18,F,O
5,robby,30,M,B
先頭行の以下は、エクセルの表で列名にあたります。
no,name,age,gender,bloodtype
それ以降の行は1行で1データを表しています。カンマで区切った何番目にあるかで、そのデータが何であるかを示しています。
例えば
1,robby,45,M,A
をカンマで区切った2番目はrobbyです。
列名の行
no,name,age,gender,bloodtype
も同様にカンマで区切った2番目を参照するとnameとなっています。
1データめのnameはrobbyであるということになります。
CVSファイルを読み込む方法
CSVファイルをJavaで読み込む際は、通常のテキストファイルと同じように読み込んだ後
1行の情報をカンマで分割することで各項目のデータを取得します。
実際に書いてみよう
読み込んだ行をカンマで分割する際はString.split( )メソッドを使います。引数で指定した文字で、行の文字列を分割し、配列として戻します。
split(“,”)と指定することで、カンマで区切った情報を配列で得ることができます。
public static void main(String[] args) {
  //ファイル読み込みで使用する3つのクラス
  FileInputStream fi = null;
  InputStreamReader is = null;
  BufferedReader br = null;
  try {
    //読み込みファイルのインスタンス生成
    //ファイル名を指定する
    fi = new FileInputStream("namelist.csv");
    is = new InputStreamReader(fi);
    br = new BufferedReader(is);
    //読み込み行
    String line;
    //読み込み行数の管理
    int i = 0;
    //列名を管理する為の配列
    String[] arr = null;
    //1行ずつ読み込みを行う
    while ((line = br.readLine()) != null) {
      //先頭行は列名
      if (i == 0) {
        //カンマで分割した内容を配列に格納する
        // arr = { "no","name","age","gender","bloodtype" };
        arr = line.split(",");
      } else {
        //データ内容をコンソールに表示する
        System.out.println("-------------------------------");
        //データ件数を表示
        System.out.println("データ" + i + "件目");
        //カンマで分割した内容を配列に格納する
        String[] data = line.split(",");
        //配列の中身を順位表示する。列数(=列名を格納した配列の要素数)分繰り返す
        int colno = 0;
        for (String column : arr) {
          System.out.println(column + ":" + data[colno]);
          colno++;
        }
      }
      //行数のインクリメント
      i++;
    }
  } catch (Exception e) {
    e.printStackTrace();
  } finally {
    try {
      br.close();
    } catch (Exception e) {
      e.printStackTrace();
    }
  }
}
読み込み用のcsvファイルはテキストエディタで作成し、プロジェクトのルートフォルダに配置します。
内容は下記です。ファイル名はnamelist.csvです。
no,name,age,gender,bloodtype
1,robby,45,M,A
2,katty,21,F,B
3,leo,23,M,AB
4,alice,18,F,O
5,robby,30,M,B
実行結果
------------------------------- データ1件目 no:1 name:robby age:45 gender:M bloodtype:A ------------------------------- データ2件目 no:2 name:katty age:21 gender:F bloodtype:B ------------------------------- データ3件目 no:3 name:leo age:23 gender:M bloodtype:AB ------------------------------- データ4件目 no:4 name:alice age:18 gender:F bloodtype:O ------------------------------- データ5件目 no:5 name:robby age:30 gender:M bloodtype:B
各行を項目ごとに表示することができました。
監修してくれたメンター
| 長屋雅美 独立系SIerで7年勤務後、現在はフリーのエンジニアとして自宅をオフィスとして活動しています。 | 

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

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

分かりました。ありがとうございます!
TechAcademyでは、初心者でもJavaやServletの技術を使ってWebアプリケーション開発を習得できるオンラインブートキャンプJava講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。
 
     
     
           
             
            