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()
ストリームを閉じて、それに関連するすべてのシステムリソースを解放します。
|
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 が負の値の場合IOException
- 入出力エラーが発生した場合public void reset() throws IOException
reset
、クラス: Reader
IOException
- ストリームにマークを設定できなかった場合、またはマークが無効になった場合public void close() throws IOException
Reader
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
close
、クラス: Reader
IOException
- 入出力エラーが発生した場合 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.