public class PushbackInputStream extends FilterInputStream
PushbackInputStream
は、ほかの入力ストリームに機能、具体的には、1 バイトを「プッシュバック」または「アンリード」する機能を追加します。これは、特定のバイト値で区切られた不定数のデータバイトをコードフラグメントで読み込むと好都合な状況で役立ちます。終端バイトを読み込むと、コードフラグメントはそれを「アンリード」できるので、入力ストリームの次の読み込み操作では、プッシュバックされたそのバイトを再度読み込むことになります。たとえば、識別子を構成している文字を表す一連のバイトは、演算子文字を表すバイトで終わることがあります。この場合、識別子を 1 つだけ読み込むジョブを持つメソッドは、演算子を検出するまで読み込みを実行し、再度読み込みを行うために演算子をプッシュバックすることができます。修飾子と型 | フィールドと説明 |
---|---|
protected byte[] |
buf
プッシュバックバッファーです。
|
protected int |
pos
プッシュバックバッファー内の次のバイトの読み込み位置です。
|
in
コンストラクタと説明 |
---|
PushbackInputStream(InputStream in)
PushbackInputStream を作成し、その引数である入力ストリーム in をあとで使用できるように保存します。 |
PushbackInputStream(InputStream in, int size)
指定された
size のプッシュバックバッファーを持つ PushbackInputStream を作成し、その引数である入力ストリーム in をあとで使用できるように保存します。 |
修飾子と型 | メソッドと説明 |
---|---|
int |
available()
この入力ストリームのメソッドの次の呼び出しによって、ブロックせずにこの入力ストリームから読み込むことができる (またはスキップできる) 推定バイト数を返します。
|
void |
close()
この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。
|
void |
mark(int readlimit)
この入力ストリームの現在位置にマークを設定します。
|
boolean |
markSupported()
この入力ストリームが
mark および reset メソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。 |
int |
read()
この入力ストリームからデータの次のバイトを読み込みます。
|
int |
read(byte[] b, int off, int len)
最大
len バイトのデータを、この入力ストリームからバイト配列に読み込みます。 |
void |
reset()
このストリームを、この入力ストリームで最後に
mark メソッドが呼び出されたときの位置に再配置します。 |
long |
skip(long n)
この入力ストリームから
n バイトのデータをスキップして破棄します。 |
void |
unread(byte[] b)
プッシュバックバッファーの先頭にバイト配列をコピーすることによって、バイト配列をプッシュバックします。
|
void |
unread(byte[] b, int off, int len)
プッシュバックバッファーの先頭にバイト配列の一部をコピーすることによって、それらのバイトをプッシュバックします。
|
void |
unread(int b)
プッシュバックバッファーの先頭に 1 バイトをコピーすることによって、そのバイトをプッシュバックします。
|
read
protected byte[] buf
protected int pos
pos
は buf.length
に一致し、バッファーがいっぱいの場合、pos
はゼロに一致します。public PushbackInputStream(InputStream in, int size)
size
のプッシュバックバッファーを持つ PushbackInputStream
を作成し、その引数である入力ストリーム in
をあとで使用できるように保存します。初期状態では、プッシュバックされたバイトはありません (pushBack
フィールドは -1
に初期化されています)。in
- バイトの読み込み元の入力ストリーム。size
- プッシュバックバッファーのサイズ。IllegalArgumentException
- サイズが 0 以下の場合public PushbackInputStream(InputStream in)
PushbackInputStream
を作成し、その引数である入力ストリーム in
をあとで使用できるように保存します。初期状態では、プッシュバックされたバイトはありません (pushBack
フィールドは -1
に初期化されています)。in
- バイトの読み込み元の入力ストリーム。public int read() throws IOException
0
- 255
の範囲の int
として返されます。ストリームの終わりに達したために読み込むバイトがない場合は、-1
が返されます。入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。
このメソッドは、最後にプッシュバックされたバイトがある場合にはそれを返します。それがない場合、そのベースとなる入力ストリームの read
メソッドを呼び出してその戻り値を返します。
read
、クラス: FilterInputStream
-1
。IOException
- この入力ストリームがその close()
メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合。InputStream.read()
public int read(byte[] b, int off, int len) throws IOException
len
バイトのデータを、この入力ストリームからバイト配列に読み込みます。このメソッドは、プッシュバックされたバイトがあればそれらを最初に読み込みます。次に、読み込まれたバイトが len
バイトよりも少ない場合は、ベースとなる入力ストリームから読み込みます。len
が 0 でない場合、このメソッドは入力の少なくとも 1 バイトが利用できるようになるまでブロックします。それ以外の場合、バイトは読み込まれず、0
が返されます。read
、クラス: FilterInputStream
b
- データの読み込み先のバッファー。off
- 転送先配列 b
の開始オフセットlen
- 読み込まれる最大バイト数。-1
。NullPointerException
- b
が null
である場合。IndexOutOfBoundsException
- off
が負の値の場合、len
が負の値の場合、あるいは len
が b.length - off
より大きい場合IOException
- この入力ストリームがその close()
メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合。InputStream.read(byte[], int, int)
public void unread(int b) throws IOException
(byte)b
を持ちます。b
- プッシュバックされる下位のバイトを持つ int
値。IOException
- バイトに対して、プッシュバックバッファーに十分なスペースがない場合、またはこの入力ストリームが close()
メソッドの呼び出しによって閉じられた場合。public void unread(byte[] b, int off, int len) throws IOException
b[off]
を持ち、その次のバイトは値 b[off+1]
を持ちます。それ以降も同様に続きます。b
- プッシュバックするバイトの配列。off
- データの開始オフセット。len
- プッシュバックするバイト数。IOException
- 指定されたバイト数に対して、プッシュバックバッファーに十分なスペースがない場合、またはこの入力ストリームがその close()
メソッドの呼び出しによって閉じられた場合。public void unread(byte[] b) throws IOException
b[0]
を持ち、その次のバイトは値 b[1]
を持ちます。それ以降も同様に続きます。b
- プッシュバックするバイトの配列IOException
- 指定されたバイト数に対して、プッシュバックバッファーに十分なスペースがない場合、またはこの入力ストリームがその close()
メソッドの呼び出しによって閉じられた場合。public int available() throws IOException
このメソッドは、プッシュバックされたバイト数の合計と available
によって返された値を返します。
available
、クラス: FilterInputStream
IOException
- この入力ストリームがその close()
メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合。FilterInputStream.in
, InputStream.available()
public long skip(long n) throws IOException
n
バイトのデータをスキップして破棄します。さまざまな理由から、skip
メソッドは指定よりも少ないバイト数しかスキップしないことがあります。0 の場合もあります。n
が負の場合、バイトはスキップされません。
PushbackInputStream
の skip
メソッドは、ブッシュバックバッファーにバイトが存在すれば、最初にそれらをスキップします。さらにスキップする必要があるバイトが存在すると、ベースとなる入力ストリームの skip
メソッドを呼び出します。スキップされた実際のバイト数が返されます。
skip
、クラス: FilterInputStream
n
- スキップされるバイト数。IOException
- ストリームがシークをサポートしていない場合、ストリームが close()
メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合。FilterInputStream.in
, InputStream.skip(long n)
public boolean markSupported()
mark
および reset
メソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。markSupported
、クラス: FilterInputStream
mark
メソッドと reset
メソッドをサポートしていないので、false
。InputStream.mark(int)
, InputStream.reset()
public void mark(int readlimit)
PushbackInputStream
の mark
メソッドは何も行いません。
mark
、クラス: FilterInputStream
readlimit
- マーク位置が無効になる前に読み込み可能なバイト数の上限。InputStream.reset()
public void reset() throws IOException
mark
メソッドが呼び出されたときの位置に再配置します。
PushbackInputStream
クラスの reset
メソッドは IOException
をスローする以外何も行いません。
reset
、クラス: FilterInputStream
IOException
- このメソッドが呼び出された場合。InputStream.mark(int)
、IOException
public void close() throws IOException
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
close
、クラス: FilterInputStream
IOException
- 入出力エラーが発生した場合。FilterInputStream.in
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.