モジュール java.base
パッケージ java.io

クラスBufferedReader

  • すべての実装されたインタフェース:
    Closeable, AutoCloseable, Readable
    直系の既知のサブクラス:
    LineNumberReader


    public class BufferedReader
    extends Reader
    文字、配列、行をバッファリングすることによって、文字型入力ストリームからテキストを効率良く読み込みます。

    バッファのサイズは、デフォルト値のままにすることも、特定の値を指定することもできます。 デフォルト値は、通常の使い方では十分な大きさです。

    一般的に、Readerに対して読込み要求が出されると、それに対応するベースとなる文字型ストリームまたはバイト・ストリームへの読込み要求が発行されます。 このため、FileReaderやInputStreamReaderのようにread()オペレーションの効率の良くないReaderでは、その周りをBufferedReaderでラップすることをお薦めします。 次に例を示します。

     BufferedReader in
       = new BufferedReader(new FileReader("foo.in"));
     
    この例は指定されたファイルからの入力をバッファします。 バッファリングせずにread()、readLine()を使うと、呼び出しごとにファイルからバイトを読み込み、文字型に変換し、そのたびに復帰するので、非常に効率が悪くなります。

    テキスト入力に対してDataInputStreamを使うプログラムは、各DataInputStreamを適切なBufferedReaderに入れ替えることによって地域対応することができます。

    導入されたバージョン:
    1.1
    関連項目:
    FileReaderInputStreamReaderFiles.newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
    • フィールドのサマリー

      • クラス java.io.Readerから継承されたフィールド

        lock
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      BufferedReader​(Reader in)
      デフォルト・サイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
      BufferedReader​(Reader in, int sz)
      指定されたサイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
    • メソッドのサマリー

      すべてのメソッド インスタンス・メソッド 具象メソッド 
      修飾子と型 メソッド 説明
      void close​()
      ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。
      Stream<String> lines​()
      Streamを返します。要素はBufferedReaderから読み込まれる行です。
      void mark​(int readAheadLimit)
      ストリームの現在位置にマークを設定します。
      boolean markSupported​()
      このストリームが、実行するmark()オペレーションをサポートするかどうかを通知します。
      int read​()
      単一の文字を読み込みます。
      int read​(char[] cbuf, int off, int len)
      配列の一部に文字を読み込みます。
      String readLine​()
      テキスト行を読み込みます。
      boolean ready​()
      このストリームが読込み可能かどうかを判定します。
      void reset​()
      ストリームを、もっとも新しいマーク位置にリセットします。
      long skip​(long n)
      文字をスキップします。
    • コンストラクタの詳細

      • BufferedReader

        public BufferedReader​(Reader in,
                              int sz)
        指定されたサイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
        パラメータ:
        in - Reader
        sz - 入力バッファのサイズ
        例外:
        IllegalArgumentException - sz <= 0の場合
      • BufferedReader

        public BufferedReader​(Reader in)
        デフォルト・サイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
        パラメータ:
        in - Reader
    • メソッドの詳細

      • read

        public int read​()
                 throws IOException
        単一の文字を読み込みます。
        オーバーライド:
        read、クラス: Reader
        戻り値:
        0 - 65535 (0x00-0xffff)の範囲の整数としての、読み込まれた文字。ストリームの終わりに達した場合は -1
        例外:
        IOException - 入出力エラーが発生した場合
      • read

        public int read​(char[] cbuf,
                        int off,
                        int len)
                 throws IOException
        配列の一部に文字を読み込みます。

        このメソッドは、Readerクラスの対応するreadメソッドの汎用規約を実装します。 より高い利便性のため、このメソッドはベースとなるストリームのreadメソッドを繰返し呼び出して、できるだけ多くの文字数を読み込もうとします。 このreadの反復は、次の条件の1つがtrueになるまで行われます。

        • 指定された文字数が読み込まれた。
        • ベースとなるストリームのreadメソッドが、ファイルの終わりを示す-1を返した。
        • ベースとなるストリームのreadyメソッドが、それ以上の入力要求がブロックされることを示すfalseを返した。
        ベースとなるストリームの最初のreadがファイルの終わりを示す-1を返すと、このメソッドは-1を返します。 そうでない場合、このメソッドは実際に読み込まれた文字数を返します。

        このクラスのサブクラスは、同じ方法でできるだけ多くの文字数を読み込むことが推奨されます。ただし、これは必須ではありません。

        通常このメソッドは、このストリームの文字バッファから文字を取得し、必要に応じてベースとなるストリームからそのバッファを埋めます。 しかし、バッファが空で、マークが無効で、要求された長さがバッファと同じ大きさ以上の場合、このメソッドはベースとなるストリームから、指定された配列に直接文字を読み込みます。 このため、余分なBufferedReaderがデータを不必要にコピーすることがありません。

        定義:
        read、クラス: Reader
        パラメータ:
        cbuf - 転送先バッファ
        off - 文字の格納開始オフセット
        len - 読み込む文字の最大数
        戻り値:
        読み込まれた文字数。ストリームの終わりに達した場合は -1
        例外:
        IOException - 入出力エラーが発生した場合
        IndexOutOfBoundsException - I/Oエラーが発生した場合
      • readLine

        public String readLine​()
                        throws IOException
        テキスト行を読み込みます。 ラインは、ライン・フィード('')、リッジ・リターン('\r')、リッジ・リターンの直後に改行、またはファイルの終わり(EOF)に到達することによって終了されるとみなされます。
        戻り値:
        行の終了文字が含まれていない、行の内容を含むString。文字を読み取らずにストリームの終わりに達した場合はnull
        例外:
        IOException - 入出力エラーが発生した場合
        関連項目:
        Files.readAllLines(java.nio.file.Path, java.nio.charset.Charset)
      • skip

        public long skip​(long n)
                  throws IOException
        文字をスキップします。
        オーバーライド:
        skip、クラス: Reader
        パラメータ:
        n - スキップする文字数
        戻り値:
        実際にスキップした文字数
        例外:
        IllegalArgumentException - nが負の値の場合。
        IOException - 入出力エラーが発生した場合
      • ready

        public boolean ready​()
                      throws IOException
        このストリームが読込み可能かどうかを判定します。 バッファリングされた文字型ストリームは、空白ではないか、またはベースとなる文字型ストリームが読込み可能であるときに読込み可能です。
        オーバーライド:
        ready、クラス: Reader
        戻り値:
        次のread()が入力をブロックしないことが確実な場合はtrue、そうでない場合はfalse。 falseが返されても、次の読込みが確実にブロックするというわけでない。
        例外:
        IOException - 入出力エラーが発生した場合
      • markSupported

        public boolean markSupported​()
        このストリームが、実行するmark()オペレーションをサポートするかどうかを通知します。
        オーバーライド:
        markSupported、クラス: Reader
        戻り値:
        このストリームがmarkオペレーションをサポートする場合に限りtrue。
      • mark

        public void mark​(int readAheadLimit)
                  throws IOException
        ストリームの現在位置にマークを設定します。 以降のreset()の呼出しでは、この位置へのストリームの再配置が試みられます。
        オーバーライド:
        mark、クラス: Reader
        パラメータ:
        readAheadLimit - マークを保持しながら読み込むことができる文字数の上限。 この上限値の前後の数の文字を読み込んだあとでストリームをリセットしようとすると失敗する場合がある。 入力バッファのサイズより大きい限界値を指定すると、そのサイズが限界より小さくない新しいバッファが割り当てられる。 そのため、大きな値は注意して使用する必要がある。
        例外:
        IllegalArgumentException - readAheadLimit < 0の場合
        IOException - 入出力エラーが発生した場合
      • reset

        public void reset​()
                   throws IOException
        ストリームを、もっとも新しいマーク位置にリセットします。
        オーバーライド:
        reset、クラス: Reader
        例外:
        IOException - ストリームにマークを設定できなかった場合、またはマークが無効になった場合
      • close

        public void close​()
                   throws IOException
        次のクラスからコピーされた説明: Reader
        ストリームを閉じて、それに関連するすべてのシステム・リソースを解放します。 ストリームが閉じられたあとにread()、ready()、mark()、reset()、またはskip()を呼び出すと、IOExceptionがスローされます。 すでに閉じられているストリームを閉じても、何の影響もありません。
        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Closeable
        定義:
        close、クラス: Reader
        例外:
        IOException - 入出力エラーが発生した場合
      • lines

        public Stream<String> lines​()
        Streamを返します。要素はBufferedReaderから読み込まれる行です。 Streamは遅延移入されます。つまり、ストリーム終端操作時には読込みのみが発生します。

        ストリーム終端操作の実行中にリーダーを操作しないでください。 そうしない場合、ストリーム終端操作の結果は保証されません。

        ストリーム終端操作の実行後は、リーダーが特定の位置にあり、そこから次の文字または行を読み込む保証はありません。

        基礎となるBufferedReaderのアクセス時にスローされたIOExceptionは、UncheckedIOExceptionにラップされます(読込みを発生させたStreamメソッドからはこれがスローされます)。 このメソッドは、閉じたBufferedReaderで呼び出された場合にStreamを返します。 BufferedReaderが閉じられた後に、そこからの読込みを必要とするストリームに対して操作すると、UncheckedIOExceptionがスローされます。

        戻り値:
        このBufferedReaderで記述されたテキスト行を提供するStream<String>
        導入されたバージョン:
        1.8