JavaのBufferedReaderの解説

JavaのBufferedReaderの解説

JavaのBufferedReaderクラスは、文字ストリームを効率的に読み取るためのクラスです。このページではBufferedReaderの使い方、主要メソッド、具体例を詳しく説明します。

BufferedReaderとは

BufferedReaderは、Javaのjava.ioパッケージに含まれるクラスで、文字入力ストリームにバッファリング機能を追加します。これにより、効率的に文字、配列、または行単位でデータを読み取ることができます。

通常、FileReaderInputStreamReaderなどの文字ストリームクラスと組み合わせて使用します。

BufferedReaderのコンストラクタ

BufferedReaderクラスには以下の2つの主要なコンストラクタがあります:

  • BufferedReader(Reader in): 指定された文字ストリームにバッファリングを追加します。
  • BufferedReader(Reader in, int sz): バッファサイズを指定して文字ストリームにバッファリングを追加します。

通常、既定のバッファサイズ(8192バイト)で十分ですが、特定の用途に応じてバッファサイズを変更することも可能です。

BufferedReaderの主なメソッド

  • read(): 1文字を読み取ります。
  • read(char[] cbuf, int off, int len): 配列にデータを読み取ります。
  • readLine(): 1行分の文字を読み取ります。
  • ready(): ストリームが準備できているか確認します。
  • close(): ストリームを閉じます。

ファイルを読み込む例

以下はBufferedReaderを使用してファイルを行ごとに読み取る例です。


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

public class BufferedReaderExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new FileReader("example.txt"))) {
            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

コンソール入力を読み取る例

BufferedReaderを使用して、ユーザーのコンソール入力を読み取る方法を示します。


import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class ConsoleInputExample {
    public static void main(String[] args) {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            System.out.println("Enter your name:");
            String name = reader.readLine();
            System.out.println("Hello, " + name + "!");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
    

大きなファイルを効率的に処理する例

BufferedReaderを使用すると、大きなファイルを効率的に処理できます。


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

public class LargeFileProcessingExample {
    public static void main(String[] args) {
        String filePath = "large_file.txt";
        long lineCount = 0;

        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            while (reader.readLine() != null) {
                lineCount++;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

        System.out.println("Total lines in the file: " + lineCount);
    }
}
    

BufferedReaderの利点

  • 大きなファイルや多数の行を効率的に処理できる。
  • バッファリングにより、ディスクI/O操作の回数を削減。
  • 行単位の読み取りが簡単。

BufferedReaderとScannerの比較

特徴 BufferedReader Scanner
パフォーマンス 高速 低速(パース処理に時間がかかる)
行単位の読み取り 対応 対応
トークン分割 非対応 対応

BufferedReaderはファイルやテキストデータを効率的に処理したい場合に適しており、Scannerは入力データを簡単に分割して処理する際に便利です。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です