Javaでファイルの読み込みを行う:BufferedReader
Java でテキストファイルなどのファイルを読み込みときは、BufferedReader クラスを用います。ここでは、BufferedReader を用いたファイルの読み込み方について説明します。
BufferedReader の使い方
BufferedReader でファイルを読み込むときは、以下のように記述します。
File f = new File("ファイル名");
BufferedReader br = new BufferedReader(new FileReader(f));
BufferedReader の引数には FileReader オブジェクトを指定する必要があります。また、これらのクラスを使用するときは、必要なクラスをインポートする必要があります。
1文字ずつファイルを読み込む
ファイルを読み込んだ後にその文字を取得するときは、BufferedReader クラスの read() メソッドを使用します。read() メソッドは、1文字ずつ ASCII コードを返し、すべての文字の読み込みが終了した場合は -1 を返します。
以下は、1文字ずつファイルを読み込む例です。
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
class Sample {
public static void main(String args[]) {
try {
File f = new File("test.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
int c = br.read();
while (c != -1) {
System.out.print((char)c);
c = br.read();
}
br.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
BufferedReader を使用するときは、必ず例外の捕捉または宣言をする必要があります。そのため、上の例では try catch の構文を使用して IOException で例外を補足しています。文字の読み込みは while 文の部分で行い、read() がファイルの終了を示す -1 を返すまで、繰り返し文字を取り出しています。
また、read() で読み込んだ文字は ASCII コードであるため char() で文字に変換して表示しています。
最後に close メソッドを使用してファイルを解放しています。メモリリークの原因となる可能性があるので、ファイルの読み込みが終了したら必ず close() を呼び出すようにしてください。
1行ずつファイルを読み込む
1行ずつ文字を読み込むには readLine() メソッドを使用します。readLine() は、1行ずつ String 型の文字列を返し、すべての文字の読み込んだ場合は null を返します。
以下は1行ずつファイルを読み込む例です。
import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
class Sample {
public static void main(String args[]) {
try {
File f = new File("sample.txt");
BufferedReader br = new BufferedReader(new FileReader(f));
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
} catch (IOException e) {
System.out.println(e);
}
}
}
read() メソッドを使用した場合と違い、readLine() は String 型の文字列を返すことに注意してください。そのため、while 文の終了判定には null を使用しています。こちらのときも忘れずにファイルを close() しましょう。