JavaTM 2
Platform
Std. Ed. v1.4.0

java.io
クラス PushbackInputStream

java.lang.Object
  |
  +--java.io.InputStream
        |
        +--java.io.FilterInputStream
              |
              +--java.io.PushbackInputStream

public class PushbackInputStream
extends FilterInputStream

ほかの入力ストリームに機能を追加します。具体的には、1 バイトを「プッシュバック」または「アンリード」する機能です。これは、特定のバイト値で区切られる不定数のデータバイトを読み込むコードを用意すると都合がよい状況で役立ちます。その区切りのバイトを読み込むと、コードはそれを「アンリード」できるので、入力ストリームの次の読み込みオペレーションでは、プッシュバックされたそのバイトを再度読み込むことになります。たとえば、識別子を構成している文字を表す一連のバイトは、演算子文字を表すバイトで終わります。識別子を 1 つだけ読み込むジョブを持つメソッドは、演算子を検出するまで読み込んで、演算子をプッシュバックして再度読み込むことができます。

導入されたバージョン:
JDK1.0

フィールドの概要
protected  byte[] buf
          プッシュバックバッファです。
protected  int pos
          プッシュバックバッファ内の次のバイトの読み込み位置です。
 
クラス java.io.FilterInputStream から継承したフィールド
in
 
コンストラクタの概要
PushbackInputStream(InputStream in)
          PushbackInputStream を作成し、その引数である入力ストリーム in をあとで使うために保存します。
PushbackInputStream(InputStream in, int size)
          指定された size のプッシュバックバッファを持つ PushbackInputStream を作成し、その引数である入力ストリーム in を、あとで使用できるように保存します。
 
メソッドの概要
 int available()
          ブロックせずにこの入力ストリームから読み込むことができるバイト数を返します。
 void close()
          この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。
 boolean markSupported()
          この入力ストリームが、mark メソッドと reset メソッドをサポートしているかどうかを判定します。
 int read()
          この入力ストリームから、データの次のバイトを読み込みます。
 int read(byte[] b, int off, int len)
          この入力ストリームから、len バイトまでのデータをバイトの配列に読み込みます。
 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 から継承したメソッド
mark, read, reset
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

buf

protected byte[] buf
プッシュバックバッファです。

導入されたバージョン:
JDK1.1

pos

protected int pos
プッシュバックバッファ内の次のバイトの読み込み位置です。バッファが空の場合、posbuf.length に一致し、バッファがいっぱいの場合、pos はゼロに一致します。

導入されたバージョン:
JDK1.1
コンストラクタの詳細

PushbackInputStream

public PushbackInputStream(InputStream in,
                           int size)
指定された size のプッシュバックバッファを持つ PushbackInputStream を作成し、その引数である入力ストリーム in を、あとで使用できるように保存します。初期状態では、プッシュバックされたバイトはありません。pushBack フィールドは -1 に初期化されます。

パラメータ:
in - バイトの読み込み元の入力ストリーム
size - プッシュバックバッファのサイズ
例外:
IllegalArgumentException - サイズが 0 以下の場合
導入されたバージョン:
JDK1.1

PushbackInputStream

public PushbackInputStream(InputStream in)
PushbackInputStream を作成し、その引数である入力ストリーム in をあとで使うために保存します。初期状態では、プッシュバックされたバイトはありません。pushBack フィールドは -1 に初期化されます。

パラメータ:
in - バイトの読み込み元の入力ストリーム
メソッドの詳細

read

public int read()
         throws IOException
この入力ストリームから、データの次のバイトを読み込みます。そのバイトは、0255 の範囲の int として返されます。ストリームの終わりに達してバイトがない場合は、値 -1 が返されます。このメソッドは、入力データが読み込まれるようになるか、ストリームの終わりが検出されるか、または例外がスローされるまでブロックします。

このメソッドは、最後にプッシュバックされたバイトがある場合にはそれを返します。それがない場合、その基本となる入力ストリームの read メソッドを呼び出してその戻り値を返します。

オーバーライド:
クラス FilterInputStream 内の read
戻り値:
データの次のバイト。ストリームの終わりに達した場合は -1
例外:
IOException - 入出力エラーが発生した場合
関連項目:
InputStream.read()

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
この入力ストリームから、len バイトまでのデータをバイトの配列に読み込みます。このメソッドでは、まずプッシュバックされたバイトがあればそれを読み込みます。次に、読み込まれたバイトが len バイトより少ない場合、基本となる入力ストリームから読み込みます。このメソッドは、少なくとも 1 バイトが入力できるようになるまでブロックします。

オーバーライド:
クラス FilterInputStream 内の read
パラメータ:
b - データの読み込み先のバッファ
off - データの開始オフセット
len - 読み込まれる最大バイト数
戻り値:
バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は -1
例外:
IOException - 入出力エラーが発生した場合
関連項目:
InputStream.read(byte[], int, int)

unread

public void unread(int b)
            throws IOException
プッシュバックバッファの先頭にそのバイトをコピーして、1 バイトをプッシュバックします。このメソッドが復帰すると、読み込む次のバイトは値 (byte)b を持ちます。

パラメータ:
b - プッシュバックされる下位のバイトを持つ int
例外:
IOException - バイトに対して、プッシュバックバッファに十分なスペースがない場合

unread

public void unread(byte[] b,
                   int off,
                   int len)
            throws IOException
プッシュバックバッファの先頭にそのバイトの配列の一部をコピーして、バイトの配列の一部をプッシュバックします。このメソッドが復帰すると、次に読み込まれるバイトは値 b[off]、その次のバイトは値 b[off+1] と、値を順次保持していきます。

パラメータ:
b - プッシュバックするバイトの配列
off - データの開始オフセット
len - プッシュバックするバイト数
例外:
IOException - 指定されたバイト数に対して、プッシュバックバッファに十分なスペースがない場合
導入されたバージョン:
JDK1.1

unread

public void unread(byte[] b)
            throws IOException
プッシュバックバッファの先頭にそのバイトの配列をコピーして、バイトの配列をプッシュバックします。このメソッドが復帰すると、次に読み込まれるバイトは値 b[0]、その次のバイトは値 b[1] と、値を順次保持していきます。

パラメータ:
b - プッシュバックするバイトの配列
例外:
IOException - 指定されたバイト数に対して、プッシュバックバッファに十分なスペースがない場合
導入されたバージョン:
JDK1.1

available

public int available()
              throws IOException
ブロックせずにこの入力ストリームから読み込むことができるバイト数を返します。このメソッドは、基本となる入力ストリームの available メソッドを呼び出します。available メソッドは、それにプッシュバックされたバイト数を足した値を返します。

オーバーライド:
クラス FilterInputStream 内の available
戻り値:
ブロックせずに入力ストリームから読み込むことができるバイト数
例外:
IOException - 入出力エラーが発生した場合
関連項目:
FilterInputStream.in, InputStream.available()

skip

public long skip(long n)
          throws IOException
この入力ストリームからのデータを n バイトだけスキップして破棄します。さまざまな理由から、skip メソッドは、指定されたよりも少ないバイト数 (ゼロの場合もある) しかスキップしないことがあります。n が負の場合、バイトはスキップされません。

PushbackInputStreamskip メソッドはまず、プッシュバックバッファ内にバイトがあればそれをスキップします。次に、さらにバイトをスキップする必要がある場合は、基本となる入力ストリームの skip メソッドを呼び出します。スキップされた実際のバイト数が返されます。

オーバーライド:
クラス FilterInputStream 内の skip
パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップされたバイト数
例外:
IOException - 入出力エラーが発生した場合
導入されたバージョン:
1.2
関連項目:
FilterInputStream.in, InputStream.skip(long n)

markSupported

public boolean markSupported()
この入力ストリームが、mark メソッドと reset メソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。

オーバーライド:
クラス FilterInputStream 内の markSupported
戻り値:
このクラスは mark メソッドと reset メソッドをサポートしていないので、false
関連項目:
InputStream.mark(int), InputStream.reset()

close

public void close()
           throws IOException
この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。

オーバーライド:
クラス FilterInputStream 内の close
例外:
IOException - 入出力エラーが発生した場合
関連項目:
FilterInputStream.in

JavaTM 2
Platform
Std. Ed. v1.4.0

バグの報告と機能のリクエスト
これ以外の API リファレンスおよび開発者用ドキュメントについては、 Java 2 SDK SE 開発者用ドキュメントを参照してください。 開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、 およびコード実例が含まれています。

Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.