Java BufferedReader でファイル読み込み:実践ガイドと例
Java でファイルを読み込むには?
Java にはファイル操作用の多様な I/O クラスがあります。テキストファイルを効率的に読み込む最も一般的な方法は java.io.BufferedReader を使用することで、下位レベルの Reader をラップし、入力をバッファリングして高コストなシステムコールを削減します。
Java の BufferedReader とは?
BufferedReader は、入力ストリーム(ファイルなど)から文字をバッファリングしながらテキストを読み込むクラスです。これにより、文字ごとにシステムコールを発生させず、高速な行単位またはブロック単位の読み込みが可能になります。
FileReader や InputStreamReader の read() メソッドはコストが高いため、それらを BufferedReader でラップするのがパフォーマンス向上の常套手段です。
典型的な使用パターン:
BufferedReader reader = new BufferedReader(new FileReader("D:\\DukesDiary.txt"));
ここでファイルが開かれ、効率的な読み込みのためにバッファリングされます。
ファイル内容を表示するには、行末まで各行をイテレート:
String currentLine;
while ((currentLine = reader.readLine()) != null) {
System.out.println(currentLine);
}
readLine() が null を返すとループ終了し、ファイル末尾に達したことを示します。
BufferedReader 例(JDK 7 より前)
以下はリソース処理のベストプラクティスを示す完全で本番対応の例です:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExample {
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("D:\\DukesDiary.txt"));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
System.out.println(currentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
finally ブロックにより、例外発生時でもリーダーが確実にクローズされ、システムリソースが解放されます。
BufferedReader 例(JDK 7+ try-with-resources)
Java 7 以降では try-with-resources 文でクリーンアップが簡素化されます。同じロジックをより簡潔に記述:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExampleJDK7 {
private static final String FILENAME = "D:\\DukesDiary.txt";
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {
String currentLine;
while ((currentLine = br.readLine()) != null) {
System.out.println(currentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
try-with-resources を使うと BufferedReader が自動的にクローズされ、コードがよりクリーンでエラーの少ないものになります。
Java
- Java BufferedReader完全ガイド:効率的な文字ストリーム処理
- Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除
- Java Hello World:最初のJavaプログラム作成ステップバイステップガイド
- Javaカプセル化完全ガイド:実践例で理解するデータ隠蔽とアクセサ
- Java String.length()メソッド:文字列サイズ取得の実例解説
- Java String.charAt()完全解説:構文、戻り値、例外、実例
- Java String.compareTo()マスター:構文、ユースケース、実践例
- Java String.contains()メソッド:部分文字列チェックの実践例
- Java String.endsWith()マスター:文字列サフィックスチェック実例付き
- Javaで挿入ソート:わかりやすい例とステップバイステップガイド
- Javaで選択ソート:ステップバイステップ例と完全コード