JavaTM Platform
Standard Ed. 6

java.io
クラス PushbackInputStream

java.lang.Object
  上位を拡張 java.io.InputStream
      上位を拡張 java.io.FilterInputStream
          上位を拡張 java.io.PushbackInputStream
すべての実装されたインタフェース:
Closeable

public class PushbackInputStream
extends FilterInputStream

PushbackInputStream は、ほかの入力ストリームに機能を追加します。具体的には、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()
          この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。
 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.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 - この入力ストリームが close() メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合
関連項目:
InputStream.read()

read

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

オーバーライド:
クラス FilterInputStream 内の read
パラメータ:
b - データの読み込み先のバッファ
off - 転送先の配列 b 内での開始オフセット
len - 読み込まれる最大バイト数
戻り値:
バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は -1
例外:
NullPointerException - bnull の場合
IndexOutOfBoundsException - off が負の場合、len が負の場合、または lenb.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() メソッドの呼び出しによって閉じられた場合
導入されたバージョン:
JDK1.1

unread

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

パラメータ:
b - プッシュバックするバイトの配列
例外:
IOException - 指定されたバイト数に対して、プッシュバックバッファーに十分なスペースがない場合、またはこの入力ストリームが close() メソッドの呼び出しによって閉じられた場合
導入されたバージョン:
JDK1.1

available

public int available()
              throws IOException
この入力ストリームのメソッドの次の呼び出しによって、ブロックせずにこの入力ストリームから読み込むことができる (またはスキップできる) 推定バイト数を返します。次の呼び出しは、同じスレッドの場合も別のスレッドの場合もあります。このような多数のバイトを 1 回で読み込んだりスキップしたりすることでブロックすることはありませんが、読み込むまたはスキップするバイト数が少なくなることがあります。  

このメソッドは、プッシュバックされたバイト数の合計と available によって返された値を返します。

オーバーライド:
クラス FilterInputStream 内の available
戻り値:
ブロックせずに入力ストリームから読み込むことができる (またはスキップできる) バイト数
例外:
IOException - この入力ストリームが close() メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合
関連項目:
FilterInputStream.in, InputStream.available()

skip

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

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

オーバーライド:
クラス FilterInputStream 内の skip
パラメータ:
n - スキップするバイト数
戻り値:
実際にスキップされたバイト数
例外:
IOException - ストリームがシークをサポートしていない場合、ストリームが close() メソッドの呼び出しによって閉じられた場合、または入出力エラーが発生した場合
導入されたバージョン:
1.2
関連項目:
FilterInputStream.in, InputStream.skip(long n)

markSupported

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

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

mark

public void mark(int readlimit)
この入力ストリームの現在位置にマークを設定します。  

PushbackInputStreammark メソッドは何も行いません。

オーバーライド:
クラス FilterInputStream 内の mark
パラメータ:
readlimit - マーク位置が無効になる前に読み込み可能なバイトの最大リミット
関連項目:
InputStream.reset()

reset

public void reset()
           throws IOException
このストリームの位置を、入力ストリームで最後に mark メソッドが呼び出されたときのマーク位置に再設定します。  

PushbackInputStream クラスの reset メソッドは、IOException をスローする以外何も行いません。

オーバーライド:
クラス FilterInputStream 内の reset
例外:
IOException - このメソッドが呼び出された場合
関連項目:
InputStream.mark(int), IOException

close

public void close()
           throws IOException
この入力ストリームを閉じて、そのストリームに関連するすべてのシステムリソースを解放します。ストリームが閉じられたあとに read()、unread()、available()、reset()、または skip() を呼び出すと、IOException がスローされます。すでに閉じられているストリームを閉じても、何の影響もありません。

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

JavaTM Platform
Standard Ed. 6

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

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。