Javaでプログラムを書いているとき、ファイルを読み込みを実行したいということはよくある。
CSVデータやテキストデータなどを使って、プログラムを動かしたいこともあるだろう。このページではJavaでファイルを読み込むための方法をサンプルプログラム付きで解説した。参考にしていただければと思う。
Javaでファイルから読み込みをする方法
Javaでファイルからデータを読み込むとき、Scannerクラスを使っていく。
一般的にはScannerクラスはキーボードから読み込むためのもののように思われがちだが、キーボードからでなくファイルからも入力値を読み取ることができる。実際にScannerクラスが多く使われる場面がこのファイルからの読み取りだ。よく覚えておきたい使い方だ。
それではファイルから読み込むScannerクラスの使い方をサンプルプログラムで見てみよう。
ファイル読み込みのサンプルプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; class sampleA { public static void main(String args[]) { try { Scanner scanner = new Scanner(new File("file.txt")); //・・・① System.out.println("ファイルを読み込みました。"); while(scanner.hasNext()) { //・・・② String string = scanner.next(); //・・・③ System.out.println(string); } System.out.println("ファイルの中身を出力しました。"); } catch (FileNotFoundException e) { //・・・④ System.out.println("ファイルが存在しませんでした。"); } } } |
まず、①でScannerクラスを初期化し、読み込むファイルを指定する。今回のサンプルプログラムは「file.txt」というファイルを読み込むように指定している。
Scanner scanner = new Scanner(new File("file.txt"));
次に②でScannerクラスで読み取ったファイルの中身をwhile文で hasNextメソッドを使って、読み取った中身がある間ループして、③のnextメソッドで1行読み取って出力を行う。区切り文字を指定していないので、改行が区切り文字となるため、1行読み取って出力といった処理の流れになっている。
while(scanner.hasNext())
String string = scanner.next();
そして④でファイル読み込みのため、try catchで例外処理をする必要がある。ファイルが存在しない場合を考えてtry catch文を書かないとコンパイルエラーになるので注意が必要だ。
catch (FileNotFoundException e)
③は「file.txt」の中身が以下のような場合、
1 2 3 |
あいうえお かきくけこ さしすせそ |
ampleAクラスを実行すると、実行結果は以下のようになる。
1 2 3 4 5 |
ファイルを読み込みました。 あいうえお かきくけこ さしすせそ ファイルの中身を出力しました。 |
CSVファイルの読み込み
ファイルを読み込む処理ではカンマ区切りのCSVファイルを読み込むことが多い。Scannerクラスでは区切り文字を指定してファイルを読み込むことができるので、CSVファイルの読み込みにはもってこいのクラスだ。
では、区切り文字にカンマを指定して読み込む処理を見てみよう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
import java.util.Scanner; import java.io.File; import java.io.FileNotFoundException; class sampleB { public static void main(String args[]) { try { Scanner scanner = new Scanner(new File("file.csv")); scanner.useDelimiter(","); //・・・① System.out.println("ファイルを読み込みました。"); while(scanner.hasNext()) { String string = scanner.next(); System.out.println(string); } System.out.println("ファイルの中身を出力しました。"); } catch (FileNotFoundException e) { System.out.println("ファイルが存在しませんでした。"); } } } |
先ほどのサンプルプログラムに1行追加して、区切り文字にカンマ「,」を指定することで、CSVファイルを読み込むことができる。
scanner.useDelimiter(",");
「file.csv」の中身が以下のような場合、
1 |
あいうえお,かきくけこ,さしすせそ |
ampleBクラスを実行すると、実行結果は以下のようになる。
1 2 3 4 5 |
ファイルを読み込みました。 あいうえお かきくけこ さしすせそ ファイルの中身を出力しました。 |
まとめ
このページではJavaでCSVなどのファイルを読み込む方法についてお伝えした。Scannerクラスを使うことで実現出来る。
ファイルの読み込みは活躍場面が多いため、ぜひ使い方を覚えてしまおう。