Javaでファイルを読み込むには?FileReaderの基本を解説します

Javaでテキストファイルを読み込むときに使える基本的なクラスのひとつにFileReaderがあります。FileReaderは、文字データをファイルから1文字ずつ読み込むためのクラスで、java.ioパッケージに含まれています。とてもシンプルに使えるので、入出力の学習を始めたばかりの方にぴったりです。
使い方はとても簡単で、FileReaderのコンストラクタにファイルパスを指定し、readメソッドを使って中身を読み込んでいきます。以下に簡単なサンプルコードをご紹介します。
import java.io.FileReader;
import java.io.IOException;
public class FileReaderExample {
public static void main(String[] args) {
try (FileReader reader = new FileReader("sample.txt")) {
int data;
while ((data = reader.read()) != -1) {
System.out.print((char) data);
}
} catch (IOException e) {
System.out.println("ファイルの読み込み中にエラーが発生しました");
e.printStackTrace();
}
}
}
このプログラムでは、sample.txtというファイルを1文字ずつ読み込みながらコンソールに表示しています。readメソッドはint型のデータを返しますが、実際には1文字分のコードポイントが返されるため、それをchar型にキャストして出力しています。
また、このコードではtry-with-resources構文を使っています。これはJava7以降で導入された機能で、FileReaderのようなリソースを自動でクローズしてくれる便利な仕組みです。ファイルの読み込みを終えた後に自分でcloseメソッドを呼ぶ必要がないため、書き間違いやリソースリークの心配も減らせます。
ただし、FileReaderにはいくつか注意点があります。まず、FileReaderは文字コードを指定することができません。たとえばUTF-8で保存されたファイルを読み込みたい場合、環境によっては文字化けする可能性があります。その場合はFileInputStreamとInputStreamReaderを組み合わせて、明示的に文字コードを指定する方法が適しています。
さらに、FileReader単体では1文字ずつしか読み込めないため、大量のデータを扱うときには効率が悪くなってしまいます。そういったときはBufferedReaderと組み合わせて使うとよいでしょう。BufferedReaderは内部にバッファを持っていて、まとめて読み込んでくれるので処理が速くなります。
簡単な読み込み処理であればFileReaderだけでも十分ですが、実際の開発現場ではBufferedReaderやInputStreamReaderなどと組み合わせて使うことが一般的です。最初はFileReaderで基本を押さえて、徐々に他のクラスとの組み合わせ方も学んでいくと理解が深まります。
いかがでしたか。FileReaderは入出力の第一歩としてとても良い教材になりますので、ぜひ自分でコードを書きながら試してみてください。実際にファイルを作成し、読み込む処理を書いてみることで、より確かなスキルが身につきます。