クラスBufferedReader

java.lang.Object
java.io.Reader
java.io.BufferedReader
すべての実装されたインタフェース:
Closeable, AutoCloseable, Readable
直系の既知のサブクラス:
LineNumberReader

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

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

一般的に、Readerに対して読込み要求が出されると、それに対応するベースとなる文字型ストリームまたはバイト・ストリームへの読込み要求が発行されます。 したがって、FileReaderInputStreamReaderなど、read()操作のコストがかかるReaderを囲むBufferedReaderをラップすることをお薦めします。 たとえば、

    BufferedReader in = new BufferedReader(new FileReader("foo.in"));
この例は指定されたファイルからの入力をバッファします。 バッファリングを行わないと、read()またはreadLine()の各呼出しによって、ファイルからバイトが読み取られ、文字に変換されてから戻される可能性があり、これは非常に非効率的です。

テキスト入力にDataInputStreamを使用するプログラムは、各DataInputStreamを適切なBufferedReaderに置き換えることでローカライズできます。

APIのノート:
BufferedReaderにラップした後は、基礎となるReaderを直接使用したり、別のリーダーでラップしたりしないでください。
導入されたバージョン:
1.1
関連項目:
  • フィールドのサマリー

    クラスリーダーで宣言されたフィールド

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

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

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

    クラスReaderで宣言されたメソッド

    nullReader, of, read, read, readAllAsString, readAllLines, skip, transferTo

    クラスオブジェクトで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • 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
      スロー:
      IndexOutOfBoundsException - offが負、lenが負、またはlencbuf.length - offより大きい場合
      IOException - 入出力エラーが発生した場合
    • readLine

      public String readLine() throws IOException
      テキスト行を読み込みます。 行は、改行(' ')、改行('\r')、改行直後の改行、またはファイルの終わり(EOF)のいずれかによって終了するとみなされます。
      戻り値:
      行終了文字を含まない行の内容を含む文字列、または文字を読み取らずにストリームの最後に到達した場合はnull
      スロー:
      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