シヨツ鬼のブログ

初心者向けに分かりやすくIT関連の情報を発信しています。

Javaでcsvファイル読み込んでみた

どうも、プログラミングの鬼シヨツ鬼です。

この記事では、「JavaCSVの入出力が行いたいぜ」そんなあなたに向けて、その方法をずばり解説しています。

 

サンプルコードを用いて、なるべく分かりやすく解説しているので、初心者の人もとりあえずコピペで動かして試してみることもできます。


 csvを読み込むには、Fileクラス、FileReaderクラス、BufferedReaderクラスに頼ることが必要

File、FileReader、BufferedReaderはJavaが用意してくれた標準クラスライブラリの中にあるクラスの一つ。

クラスライブラリは、日本語訳すると「クラスの図書館」(クラスって日本語じゃねーよΣ(・ω・ノ)ノ!

つまり、便利なクラスがたくさんつまった便利セットのこと。

で、標準クラスライブラリだとその名の通り、Javaがもともと用意してくれている公式の便利セットってこと。

ちなみに、ここで標準クラスライブラリで何が使えるか紹介されてる。

https://docs.oracle.com/javase/jp/8/docs/api/

iPhoneにiPhone8やiPhoneXがあるように、Javaにもバージョンがある。

上のリンクはJava8のクラスライブラリなのでご注意を。

 

それぞれのクラスの役割は下記の通りです。

Fileクラス:ファイルやディレクトリの作成・削除、読み込み・書き込みなど、ファイル操作するときの様々なメソッドを持つクラス

FileReaderクラス:Fileクラスを引数に、ファイル読み込みを実現するクラス

BufferedReaderクラス:FilwReaderクラスを引数に、ファイル一行読みこみを実現するクラス(FileReaderだけでも読み込めるが一文字ずつ読み込むので効率が悪い)

 

標準クラス使いこなせば難しくないです。

標準クラスがなんでファイルを読み込んだりできるのかはわかりません(笑)

Java作った人すごい。

 

参考にしたサイト

【Java入門】1分で理解する標準クラスとは?

【Java入門】Fileクラスの使い方総まとめ | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト

【Java入門】BufferedReaderでテキストをまとめて読み込む(readLine) | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト

 


 例題「PPAP.csv」を読み込んで、表示するPpapクラスを作りなさい

 上でいろいろ、書きましたが、習うより慣れよ!ってことで例題行きます。

1,csvファイルを作る

メモ帳で「,」区切りでデータを入れて、PPAP.csvと名前を付けて保存。

f:id:shiyotsuki:20181212210946p:plain

csvファイルを作る

 2、Ppap.javaを作成

下記の内容をメモ帳に書いて、「Ppap.java」で保存

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;

class Ppap {
public static void main(String args) {
try {
File f = new File("PPAP.csv"); //csvファイルを開く
BufferedReader br = new BufferedReader(new FileReader(f)); //一行読み込みするためにBufferedReaderクラスを作る

String line;
// 1行ずつCSVファイルを読み込む
while ((line = br.readLine()) != null) { //一行読み込みができなくなる(ファイルの終わり)まで繰り返す
String data = line.split(",", 0); // 行をカンマ区切りで配列に変換

for (String elem : data) { //配列の中身を全て書き出すまで繰り返す
System.out.println(elem);
}
}
br.close(); //開いたファイルは閉じる

} catch (IOException e) { //例外処理
System.out.println(e);
}
}
}

f:id:shiyotsuki:20181212212050p:plain

Ppap.javaを作る

 

 IOExceptionは例外処理のために使っているよ。

僕の理解がまだ浅いから、今回は説明しないよ。

ざっくり言うと、もしも「PPAP.csv」のファイルが無かったときに「やべぇ」って言わせるためにあるよ。

 

3、コンパイルして実行!

コマンドプロンプトで以下コマンドを実行する。

cd C:\新しいフォルダー

javac Ppap.java

java Papa

 

f:id:shiyotsuki:20181212212946p:plain

PPAP!

 4、おまけ(ありがちなエラー1)

例外IOExceptionは報告されません。スローするには、捕捉また は宣言する必要があります

f:id:shiyotsuki:20181212213802p:plain

例外処理を付け忘れるとでるエラー

2のプログラムからtry{}catach(){}を消すと、このようなエラーが出ます。

 

5、おまけ(ありがちなエラー2)

エラー: シンボルを見つけられません

f:id:shiyotsuki:20181212214833p:plain

シンボルを見つけられません

「そんなクラスしらねーよ 」って言われてます。

今回なら

import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;

のように、どのクラスを使うのか教えてあげる必要があります。

 

f:id:shiyotsuki:20181212220626p:plain

Fileクラスの実体はここにいる