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講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。