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バイトをコピーすることによって、そのバイトをプッシュ・バックします。
|
readprotected 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、クラスFilterInputStreamb - データの読込み先のバッファ。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、クラスFilterInputStreamIOException - この入力ストリームがそのclose()メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。FilterInputStream.in, InputStream.available()public long skip(long n)
throws IOException
nバイトのデータをスキップして破棄します。 さまざまな理由から、skipメソッドは指定よりも少ないバイト数しかスキップしないことがあります。0の場合もあります。 nが負の場合、バイトはスキップされません。
PushbackInputStreamのskipメソッドは、ブッシュバック・バッファにバイトが存在すれば、最初にそれらをスキップします。 さらにスキップする必要があるバイトが存在すると、ベースとなる入力ストリームのskipメソッドを呼び出します。 スキップされた実際のバイト数が返されます。
skip、クラスFilterInputStreamn - スキップされるバイト数。IOException - ストリームがシークをサポートしていない場合、ストリームがclose()メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。FilterInputStream.in, InputStream.skip(long n)public boolean markSupported()
markおよびresetメソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。markSupported、クラスFilterInputStreammarkメソッドとresetメソッドをサポートしていないので、false。InputStream.mark(int), InputStream.reset()public void mark(int readlimit)
PushbackInputStreamのmarkメソッドは何も行いません。
mark、クラスFilterInputStreamreadlimit - マーク位置が無効になる前に読込み可能なバイト数の上限。InputStream.reset()public void reset()
throws IOException
markメソッドが呼び出されたときの位置に再配置します。
PushbackInputStreamクラスのresetメソッドはIOExceptionをスローする以外何も行いません。
reset、クラスFilterInputStreamIOException - このメソッドが呼び出された場合。InputStream.mark(int)、IOExceptionpublic void close()
throws IOException
close、インタフェースCloseableclose、インタフェースAutoCloseableclose、クラスFilterInputStreamIOException - 入出力エラーが発生した場合。FilterInputStream.in バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。