- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.io.PushbackInputStream
-
- すべての実装されたインタフェース:
Closeable
,AutoCloseable
public class PushbackInputStream extends FilterInputStream
PushbackInputStream
は、内部バッファにプッシュバックされたバイトを格納することによって、別の入力ストリーム、つまり"プッシュバック"または"unread"バイトへの機能性を追加します。 これは、特定のバイト値で区切られた不定数のデータ・バイトをコード・フラグメントで読み込むと好都合な状況で役立ちます。終端バイトを読み込むと、コード・フラグメントはそれをアンリードできるので、入力ストリームの次の読込み操作では、プッシュバックされたそのバイトを再度読み込むことになります。 たとえば、識別子を構成している文字を表す一連のバイトは、演算子文字を表すバイトで終わることがあります。この場合、識別子を1つだけ読み込むジョブを持つメソッドは、演算子を検出するまで読込みを実行し、再度読込みを行うために演算子をプッシュバックすることができます。- 導入されたバージョン:
- 1.0
-
-
フィールドのサマリー
フィールド 修飾子と型 フィールド 説明 protected byte[]
buf
プッシュバック・バッファです。protected int
pos
プッシュバック・バッファ内の次のバイトの読込み位置です。-
クラス java.io.FilterInputStreamで宣言されたフィールド
in
-
-
コンストラクタのサマリー
コンストラクタ コンストラクタ 説明 PushbackInputStream(InputStream in)
PushbackInputStream
を1バイトのプッシュバック・バッファで作成し、その引数である入力ストリーム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バイトをコピーすることによって、そのバイトをプッシュ・バックします。-
クラス java.io.FilterInputStreamで宣言されたメソッド
read
-
クラス java.io.InputStreamで宣言されたメソッド
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
-
-
-
-
コンストラクタの詳細
-
PushbackInputStream
public PushbackInputStream(InputStream in, int size)
指定されたsize
のプッシュバック・バッファを持つPushbackInputStream
を作成し、その引数である入力ストリームin
をあとで使用できるように保存します。 最初は、プッシュバック・バッファは空です。- パラメータ:
in
- バイトの読込み元の入力ストリーム。size
- プッシュバック・バッファのサイズ。- 例外:
IllegalArgumentException
-size <= 0
の場合- 導入されたバージョン:
- 1.1
-
PushbackInputStream
public PushbackInputStream(InputStream in)
PushbackInputStream
を1バイトのプッシュバック・バッファで作成し、その引数である入力ストリームin
を後で使用するために保存します。 最初は、プッシュバック・バッファは空です。- パラメータ:
in
- バイトの読込み元の入力ストリーム。
-
-
メソッドの詳細
-
read
public int read() throws IOException
この入力ストリームからデータの次のバイトを読み込みます。 バイト値は、0
-255
の範囲のint
として返されます。 ストリームの終わりに達したために読み込むバイトがない場合は、-1
が返されます。 入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。このメソッドは、最後にプッシュ・バックされたバイトがある場合にはそれを返します。それがない場合、そのベースとなる入力ストリームの
read
メソッドを呼び出してその戻り値を返します。- オーバーライド:
read
、クラス:FilterInputStream
- 戻り値:
- データの次のバイト。ストリームの終わりに達した場合は
-1
。 - 例外:
IOException
- この入力ストリームがそのclose()
メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。- 関連項目:
InputStream.read()
-
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)
-
unread
public void unread(int b) throws IOException
プッシュバック・バッファの先頭に1バイトをコピーすることによって、そのバイトをプッシュ・バックします。 このメソッドが復帰すると、次に読み込まれるバイトは値(byte)b
を持ちます。- パラメータ:
b
- プッシュ・バックされる下位のバイトを持つint
値。- 例外:
IOException
- バイトに対して、プッシュバック・バッファに十分なスペースがない場合、またはこの入力ストリームがclose()
メソッドの呼出しによって閉じられた場合。
-
unread
public void unread(byte[] b, int off, int len) throws IOException
プッシュバック・バッファの先頭にバイト配列の一部をコピーすることによって、それらのバイトをプッシュ・バックします。 このメソッドが復帰すると、次に読み込まれるバイトは値b[off]
を持ち、その次のバイトは値b[off+1]
を持ちます。それ以降も同様に続きます。- パラメータ:
b
- プッシュ・バックするバイトの配列。off
- データの開始オフセット。len
- プッシュ・バックするバイト数。- 例外:
IOException
- 指定されたバイト数に対して、プッシュバック・バッファに十分なスペースがない場合、またはこの入力ストリームがそのclose()
メソッドの呼出しによって閉じられた場合。- 導入されたバージョン:
- 1.1
-
unread
public void unread(byte[] b) throws IOException
プッシュバック・バッファの先頭にバイト配列をコピーすることによって、バイト配列をプッシュ・バックします。 このメソッドが復帰すると、次に読み込まれるバイトは値b[0]
を持ち、その次のバイトは値b[1]
を持ちます。それ以降も同様に続きます。- パラメータ:
b
- プッシュ・バックするバイトの配列- 例外:
IOException
- 指定されたバイト数に対して、プッシュバック・バッファに十分なスペースがない場合、またはこの入力ストリームがそのclose()
メソッドの呼出しによって閉じられた場合。- 導入されたバージョン:
- 1.1
-
available
public int available() throws IOException
この入力ストリームのメソッドの次の呼出しによって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。 次の呼出しは、同じスレッドの場合も別のスレッドの場合もあります。 このような多数のバイトを1回で読み込んだりスキップしたりすることでブロックすることはありませんが、読み込むまたはスキップするバイト数が少なくなることがあります。このメソッドは、プッシュ・バックされたバイト数の合計と
available
によって返された値を返します。- オーバーライド:
available
、クラス:FilterInputStream
- 戻り値:
- ブロックせずに入力ストリームから読み込むことができる(またはスキップできる)バイト数。
- 例外:
IOException
- この入力ストリームがそのclose()
メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。- 関連項目:
FilterInputStream.in
,InputStream.available()
-
skip
public long skip(long n) throws IOException
この入力ストリームからn
バイトのデータをスキップして破棄します。 さまざまな理由から、skip
メソッドは指定よりも少ないバイト数しかスキップしないことがあります。0の場合もあります。n
が負の場合、バイトはスキップされません。PushbackInputStream
のskip
メソッドは、ブッシュバック・バッファにバイトが存在すれば、最初にそれらをスキップします。 さらにスキップする必要があるバイトが存在すると、ベースとなる入力ストリームのskip
メソッドを呼び出します。 スキップされた実際のバイト数が返されます。- オーバーライド:
skip
、クラス:FilterInputStream
- パラメータ:
n
- スキップされるバイト数。- 戻り値:
- 実際にスキップされたバイト数。
- 例外:
IOException
-close()
メソッドを呼び出してストリームをクローズした場合、in.skip(n)
がIOExceptionをスローするか、I/Oエラーが発生します。- 導入されたバージョン:
- 1.2
- 関連項目:
FilterInputStream.in
,InputStream.skip(long n)
-
markSupported
public boolean markSupported()
この入力ストリームがmark
およびreset
メソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。- オーバーライド:
markSupported
、クラス:FilterInputStream
- 戻り値:
- このクラスは
mark
メソッドとreset
メソッドをサポートしていないので、false
。 - 関連項目:
InputStream.mark(int)
,InputStream.reset()
-
mark
public void mark(int readlimit)
この入力ストリームの現在位置にマークを設定します。PushbackInputStream
のmark
メソッドは何も行いません。- オーバーライド:
mark
、クラス:FilterInputStream
- パラメータ:
readlimit
- マーク位置が無効になる前に読込み可能なバイト数の上限。- 関連項目:
InputStream.reset()
-
reset
public void reset() throws IOException
このストリームを、この入力ストリームで最後にmark
メソッドが呼び出されたときの位置に再配置します。PushbackInputStream
クラスのreset
メソッドはIOException
をスローする以外何も行いません。- オーバーライド:
reset
、クラス:FilterInputStream
- 例外:
IOException
- このメソッドが呼び出された場合。- 関連項目:
InputStream.mark(int)
、IOException
-
close
public void close() throws IOException
この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。 ストリームが閉じられたあとにread()、unread()、available()、reset()、またはskip()を呼び出すと、IOExceptionがスローされます。 すでに閉じられているストリームを閉じても、何の影響もありません。- 定義:
close
、インタフェース:AutoCloseable
- 定義:
close
、インタフェース:Closeable
- オーバーライド:
close
、クラス:FilterInputStream
- 例外:
IOException
- 入出力エラーが発生した場合。- 関連項目:
FilterInputStream.in
-
-