JavaのStreamReaderとは
JavaのStreamReaderは、java.ioパッケージに属するクラスの一部で、テキストファイルからテキストデータを読み取るためのストリームリーダーを提供します。
主に文字セットの変換やテキストデータの読み取りを効率的に行うために使用されます。
StreamReaderは、Readerクラスのサブクラスであり、InputStreamReaderクラスを拡張しています。
これにより、バイトストリームから文字ストリームへの変換が可能になります。
基本的な使用法は次のようになります:
import java.io.*; public class Example { public static void main(String[] args) { try { // ファイルのパスを指定してFileReaderを作成し、それをInputStreamReaderにラップする FileReader fileReader = new FileReader("example.txt"); InputStreamReader inputStreamReader = new InputStreamReader(fileReader); // BufferedReaderを使用してテキストデータを行単位で読み取る BufferedReader bufferedReader = new BufferedReader(inputStreamReader); String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } // リソースを閉じる bufferedReader.close(); } catch (IOException e) { e.printStackTrace(); } } }
この例では、FileReaderを使ってファイルからテキストデータを読み取り、それをInputStreamReaderでラップしています。
そして、BufferedReaderを使用して行ごとにデータを読み取り、コンソールに表示しています。
リソースは適切にクローズされるようにtry-with-resources文が使用されています。
InputStreamReaderを使わずにBufferedReaderだけで処理をする方法
BufferedReaderは、Readerをラップしてテキストデータをバッファリングするためのもので、通常はInputStreamReaderと組み合わせて使用されます。
しかし、直接ファイルからBufferedReaderを作成することも可能です。
以下は、FileReaderを使用せずにBufferedReaderだけを使ってファイルを読み取る例です:
import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class Example { public static void main(String[] args) { String filePath = "example.txt"; try (BufferedReader bufferedReader = new BufferedReader(new FileReader(filePath))) { String line; while ((line = bufferedReader.readLine()) != null) { System.out.println(line); } } catch (FileNotFoundException e) { System.err.println("File not found: " + filePath); } catch (IOException e) { e.printStackTrace(); } } }
この例では、BufferedReaderがFileReaderを直接ラップしています。
FileReaderがInputStreamReaderを内部的に使用しているため、実際にはInputStreamReaderが裏で動いていますが、直接それを指定する必要はありません。
BufferedReaderはコンストラクタで与えられたReaderをラップして使用することができます。