- java.lang.Object
-
- java.io.Reader
-
- 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
- 関連項目:
FileReader
、InputStreamReader
、Files.newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 BufferedReader(Reader in)
デフォルト・サイズのバッファでバッファリングされた、文字型入力ストリームを作成します。BufferedReader(Reader in, int sz)
指定されたサイズのバッファでバッファリングされた、文字型入力ストリームを作成します。
-
メソッドのサマリー
すべてのメソッド インスタンス・メソッド 具象メソッド 修飾子と型 メソッド 説明 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)
文字をスキップします。-
クラス java.io.Readerで宣言されたメソッド
close, nullReader, read, read, transferTo
-
-
-
-
コンストラクタの詳細
-
BufferedReader
public BufferedReader(Reader in, int sz)
指定されたサイズのバッファでバッファリングされた、文字型入力ストリームを作成します。- パラメータ:
in
- Readersz
- 入力バッファのサイズ- 例外:
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
- ストリームにマークを設定できなかった場合、またはマークが無効になった場合
-
lines
public Stream<String> lines()
Stream
を返します。要素はBufferedReader
から読み込まれる行です。Stream
は遅延移入されます。つまり、ストリーム終端操作時には読込みのみが発生します。ストリーム終端操作の実行中にリーダーを操作しないでください。 そうしない場合、ストリーム終端操作の結果は保証されません。
ストリーム終端操作の実行後は、リーダーが特定の位置にあり、そこから次の文字または行を読み込む保証はありません。
基礎となる
BufferedReader
のアクセス時にスローされたIOException
は、UncheckedIOException
にラップされます(読込みを発生させたStream
メソッドからはこれがスローされます)。 このメソッドは、閉じたBufferedReaderで呼び出された場合にStreamを返します。 BufferedReaderが閉じられた後に、そこからの読込みを必要とするストリームに対して操作すると、UncheckedIOExceptionがスローされます。- 戻り値:
- この
BufferedReader
で記述されたテキスト行を提供するStream<String>
- 導入されたバージョン:
- 1.8
-
-