Java アドバンス

Java BufferedReader

1. BufferedReader と BufferedWriter

BufferedReader および BufferedWriter は、テキストファイルの読み込みと書き込みをより高速にするためのクラスです。

  • BufferedReader: readLine() メソッドを使用して、テキストを行単位で読み取ることができます。
  • BufferedWriter: テキストを効率的に書き込み、newLine() メソッドで簡単に改行を追加できます。

これらのクラスは通常、ファイルのオープンや作成を担当する FileReaderFileWriter と組み合わせて使用されます。バッファリング(Buffered)クラスを挟むことで、メモリ上のバッファを利用し、物理デバイスへのアクセス回数を減らすため、読み書きの速度が劇的に向上します。

2. テキストファイルの読み込み(行単位)

BufferedReaderFileReader と組み合わせて、ファイルの内容を1行ずつ読み取る方法を確認しましょう。

2.1 実装コード例

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

public class Main {
  public static void main(String[] args) {
    // try-with-resources構文を使用:BufferedReaderとFileReaderは自動的にクローズされる
    try (BufferedReader br = new BufferedReader(new FileReader("filename.txt"))) {
      String line;
      
      // readLine()は1行読み込み、ファイルの終端に達するとnullを返す
      while ((line = br.readLine()) != null) {
        // 読み込んだ行をコンソールに出力
        System.out.println(line);
      }
    } catch (IOException e) {
      // ファイルが見つからない場合やアクセス権限がない場合などのエラー処理
      System.out.println("ファイルの読み取り中にエラーが発生しました。");
    }
  }
}

出力結果:

Some text from filename.txt

解説: このプログラムは filename.txt を開き、内容を1行ずつ読み取ってコンソールに出力します。Scanner クラスよりも大きなファイルの処理に適しており、パフォーマンス面でのメリットが非常に大きいのが特徴です。