Javaでcsvファイル読み込んでみた
どうも、プログラミングの鬼シヨツ鬼です。
この記事では、「JavaでCSVの入出力が行いたいぜ」そんなあなたに向けて、その方法をずばり解説しています。
サンプルコードを用いて、なるべく分かりやすく解説しているので、初心者の人もとりあえずコピペで動かして試してみることもできます。
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入門】Fileクラスの使い方総まとめ | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
【Java入門】BufferedReaderでテキストをまとめて読み込む(readLine) | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト
例題「PPAP.csv」を読み込んで、表示するPpapクラスを作りなさい
上でいろいろ、書きましたが、習うより慣れよ!ってことで例題行きます。
1,csvファイルを作る
メモ帳で「,」区切りでデータを入れて、PPAP.csvと名前を付けて保存。
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);
}
}
}
IOExceptionは例外処理のために使っているよ。
僕の理解がまだ浅いから、今回は説明しないよ。
ざっくり言うと、もしも「PPAP.csv」のファイルが無かったときに「やべぇ」って言わせるためにあるよ。
3、コンパイルして実行!
コマンドプロンプトで以下コマンドを実行する。
cd C:\新しいフォルダー
java Papa
4、おまけ(ありがちなエラー1)
例外IOExceptionは報告されません。スローするには、捕捉また は宣言する必要があります
2のプログラムからtry{}catach(){}を消すと、このようなエラーが出ます。
5、おまけ(ありがちなエラー2)
エラー: シンボルを見つけられません
「そんなクラスしらねーよ 」って言われてます。
今回なら
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
のように、どのクラスを使うのか教えてあげる必要があります。