public class BufferedReader extends Reader
バッファのサイズは、デフォルト値のままにすることも、特定の値を指定することもできます。デフォルト値は、通常の使い方では十分な大きさです。
一般的に、Readerに対して読込み要求が出されると、それに対応するベースとなる文字型ストリームまたはバイト・ストリームへの読込み要求が発行されます。このため、FileReaderやInputStreamReaderのようにread()オペレーションの効率の良くないReaderでは、その周りをBufferedReaderでラップすることをお薦めします。次に例を示します。
BufferedReader in = new BufferedReader(new FileReader("foo.in"));この例は指定されたファイルからの入力をバッファします。バッファリングせずにread()、readLine()を使うと、呼び出しごとにファイルからバイトを読み込み、文字型に変換し、そのたびに復帰するので、非常に効率が悪くなります。
テキスト入力に対してDataInputStreamを使うプログラムは、各DataInputStreamを適切なBufferedReaderに入れ替えることによって地域対応することができます。
FileReader
、InputStreamReader
、Files.newBufferedReader(java.nio.file.Path, java.nio.charset.Charset)
コンストラクタと説明 |
---|
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)
文字をスキップします。
|
public BufferedReader(Reader in, int sz)
in
- Readersz
- 入力バッファのサイズIllegalArgumentException
- sz <= 0
の場合public BufferedReader(Reader in)
in
- Readerpublic int read() throws IOException
read
、クラス: Reader
IOException
- 入出力エラーが発生した場合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
- 読み込む文字の最大数IOException
- 入出力エラーが発生した場合public String readLine() throws IOException
IOException
- 入出力エラーが発生した場合Files.readAllLines(java.nio.file.Path, java.nio.charset.Charset)
public long skip(long n) throws IOException
skip
、クラス: Reader
n
- スキップする文字数IllegalArgumentException
- n
が負の値の場合。IOException
- 入出力エラーが発生した場合public boolean ready() throws IOException
ready
、クラス: Reader
IOException
- 入出力エラーが発生した場合public boolean markSupported()
markSupported
、クラス: Reader
public void mark(int readAheadLimit) throws IOException
mark
、クラス: Reader
readAheadLimit
- マークを保持しながら読み込むことができる文字数の上限。この上限値の前後の数の文字を読み込んだあとでストリームをリセットしようとすると失敗する場合がある。入力バッファのサイズより大きい限界値を指定すると、そのサイズが限界より小さくない新しいバッファが割り当てられる。そのため、大きな値は注意して使用する必要がある。IllegalArgumentException
- readAheadLimit < 0
の場合IOException
- 入出力エラーが発生した場合public void reset() throws IOException
reset
、クラス: Reader
IOException
- ストリームにマークを設定できなかった場合、またはマークが無効になった場合public void close() throws IOException
Reader
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
close
、クラス: Reader
IOException
- 入出力エラーが発生した場合public Stream<String> lines()
Stream
を返します。要素はBufferedReader
から読み込まれる行です。Stream
は遅延移入されます。つまり、ストリーム終端操作時には読込みのみが発生します。
ストリーム終端操作の実行中にリーダーを操作しないでください。そうしない場合、ストリーム終端操作の結果は保証されません。
ストリーム終端操作の実行後は、リーダーが特定の位置にあり、そこから次の文字または行を読み込む保証はありません。
基礎となるBufferedReader
のアクセス時にスローされたIOException
は、UncheckedIOException
にラップされます(読込みを発生させたStream
メソッドからはこれがスローされます)。このメソッドは、閉じたBufferedReaderで呼び出された場合にStreamを返します。BufferedReaderが閉じられた後に、そこからの読込みを必要とするストリームに対して操作すると、UncheckedIOExceptionがスローされます。
BufferedReader
で記述されたテキスト行を提供するStream<String>
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.