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
- size <= 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, 2014, Oracle and/or its affiliates. All rights reserved.