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() しましょう。


イベント

2017/12/05(火)
Design Thinking Square