こんにちは!
スタッフ19号です!
今回は、JavaでFileの読み込みをする機会があったので、基本的なことにはなりますが、Fileの読み込み方法などのお話をしていきたいなと思います。
javaにはFileクラスというものがあり、ファイルやディレクトリの作成・削除・ファイルの読み込み・ファイルの書き込みなど、ファイルの関する様々なメソッドが用意されているクラスがあります。
今回はその中の、ファイルの読み込みについてになります。
読み込みにも様々あるので全部書くと大変なので、代表的な、FileReaderクラス、FileInputStreamクラス、BufferedReaderクラスをみていきます。
FileReaderクラス
FileReaderクラスは、テキストファイルを基本的に1文字ずつ読み込んでいくものとなります。
実際の使い方を簡単に説明します。
まずは事前にtest.txtファイルを作成しておきます
test.txtの中身
Hello World!
FileReaderの具体的な書き方
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
//
FileReaderやreadメソッドは、FileNotFoundExceptionやIOExceptionを出す可能性があるためtry-catchで囲みます
try {
//Fileクラスに読み込むファイルを指定する(ファイルの指定には絶対指定と相対指定が可能)
File file = new File("c:test.txt");
//ファイルが存在するか確認する
if(file.exists()) {
//FileReaderクラスのオブジェクトを生成する
FileReader fileReader = new FileReader(file);
//filereaderクラスのreadメソッドでファイルを1文字ずつ読み込む(読み込んだ値はint型の値として取得される)
int hoge;
//ファイルの先頭から順に1文字ずつ読み込まれるため、ファイルの最後に達したときに「-1」を返す。とすると、最後まで文字を読み込めます
while((hoge = fileReader.read()) != -1) {
//読み込んだ文字を、文字として表示させる
System.out.print((char)hoge);
}
//ファイルに対する全ての処理が終わったら、ファイルを閉じるために「close」メソッドを使います
fileReader.close();
} else {
System.out.print("ファイルは存在しません");
}
} catch (IOException e) {
e.printStackTrace();
}
}
これで「Hello World!」が表示されます!
FileInputStreamクラス
FileInputStreamクラスはファイルを読み込み、ファイルの内容を元にした処理や、新しいファイルの作成などを行うためのクラスになります。
FileInputStreamクラスを使用すると、ファイルの内容はバイトストリーム(ひと続き)で読み込まれます。
実際の使い方
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws Exception {
//try(例外処理が必要なオブジェクトの作成)の書き方をすると、close()処理いらなくなる
try (FileInputStream fileInputStream = new FileInputStream("c:test.txt")) {
//オブジェクトを利用して処理を行う。エンコーディングを指定。入力ストリームから1バイトのデータを読み取る
InputStreamReader fileInputStream = new InputStreamReader(fileInputStream, "UTF-8");
int hoge;
while((hoge = fileInputStream .read()) != -1) {
System.out.println((char) hoge);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
これで「Hello World!」が表示されます!
BufferedReaderクラス
BufferedReaderクラスとは、テキストファイルを読み込むためのクラスになります。
BufferedReaderクラスでは、テキストファイルを1行ずつ読み込むreadlineメソッドが用意されています。
実際の使い方
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) {
try {
File file = new File("c:test.txt");
// ファイルが存在しない場合に例外が発生するので確認する
if (!file.exists()) {
System.out.print("ファイルが存在しません");
return;
}
// BufferedReaderクラスのreadLineメソッドを使って1行ずつ読み込み表示する
FileReader fileReader = new FileReader(file);
BufferedReader bufferedReader = new BufferedReader(fileReader);
String hoge;
//readLineメソッドは指定したテキストファイルを1行ずつ読み込み、String型の戻り値として返す。ファイルの終わりに到達した場合は「null」を返す
while((hoge = bufferedReader.readLine()) != null) {
System.out.println(hoge);
}
bufferedReader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
これで「Hello World!」が表示されます!
まとめ
Fileを使用するときは、
例外処理を行うこと。
close()処理を行うこと。
を忘れずに行ってくださいね。
今回は例外処理の書き方や、Fileがあるかどうかのチェックの書き方をいろいろと変えてみたので、それも参考にしてもらえればなと思います。
以上!スタッフ19号のJavaのFile読み込みについてでした!