モジュール java.base
パッケージ java.io

クラスPushbackInputStream

すべての実装されたインタフェース:
Closeable, AutoCloseable

public class PushbackInputStream extends FilterInputStream
PushbackInputStreamは、内部バッファにプッシュバックされたバイトを格納することによって、別の入力ストリーム、つまり"プッシュバック"または"unread"バイトへの機能性を追加します。 これは、特定のバイト値で区切られた不定数のデータ・バイトをコード・フラグメントで読み込むと好都合な状況で役立ちます。終端バイトを読み込むと、コード・フラグメントはそれを「アンリード」できるので、入力ストリームの次の読込み操作では、プッシュバックされたそのバイトを再度読み込むことになります。 たとえば、識別子を構成している文字を表す一連のバイトは、演算子文字を表すバイトで終わることがあります。この場合、識別子を1つだけ読み込むジョブを持つメソッドは、演算子を検出するまで読込みを実行し、再度読込みを行うために演算子をプッシュバックすることができます。
導入されたバージョン:
1.0
  • フィールドのサマリー

    フィールド
    修飾子と型
    フィールド
    説明
    protected byte[]
    プッシュバック・バッファです。
    protected int
    プッシュバック・バッファ内の次のバイトの読込み位置です。

    クラス java.io.FilterInputStreamで宣言されたフィールド

    in
  • コンストラクタのサマリー

    コンストラクタ
    コンストラクタ
    説明
    PushbackInputStreamを1バイトのプッシュバック・バッファで作成し、その引数である入力ストリームinを後で使用するために保存します。
    指定されたsizeのプッシュバック・バッファを持つPushbackInputStreamを作成し、その引数である入力ストリームinをあとで使用できるように保存します。
  • メソッドのサマリー

    修飾子と型
    メソッド
    説明
    int
    この入力ストリームのメソッドの次の呼出しによって、ブロックせずにこの入力ストリームから読み込むことができる(またはスキップできる)推定バイト数を返します。
    void
    この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。
    void
    mark(int readlimit)
    この入力ストリームの現在位置にマークを設定します。
    boolean
    この入力ストリームがmarkおよびresetメソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。
    int
    この入力ストリームからデータの次のバイトを読み込みます。
    int
    read(byte[] b, int off, int len)
    最大lenバイトのデータを、この入力ストリームからバイト配列に読み込みます。
    void
    このストリームを、この入力ストリームで最後に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

    クラス java.lang.Objectで宣言されたメソッド

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • フィールド詳細

    • buf

      protected byte[] buf
      プッシュバック・バッファです。
      導入されたバージョン:
      1.1
    • pos

      protected int pos
      プッシュバック・バッファ内の次のバイトの読込み位置です。 バッファが空の場合、posbuf.lengthに一致し、バッファがいっぱいの場合、posはゼロに一致します。
      導入されたバージョン:
      1.1
  • コンストラクタの詳細

    • 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()メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。
      関連項目:
    • 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 - bnullである場合。
      IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、あるいはlenb.length - offより大きい場合
      IOException - この入力ストリームがそのclose()メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。
      関連項目:
    • 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 - プッシュ・バックするバイト数。
      例外:
      NullPointerException - bnullである場合。
      IOException - 指定されたバイト数に対して、プッシュバック・バッファに十分なスペースがない場合、またはこの入力ストリームがそのclose()メソッドの呼出しによって閉じられた場合。
      導入されたバージョン:
      1.1
    • unread

      public void unread(byte[] b) throws IOException
      プッシュバック・バッファの先頭にバイト配列をコピーすることによって、バイト配列をプッシュ・バックします。 このメソッドが復帰すると、次に読み込まれるバイトは値b[0]を持ち、その次のバイトは値b[1]を持ちます。それ以降も同様に続きます。
      パラメータ:
      b - プッシュ・バックするバイトの配列
      例外:
      NullPointerException - bnullである場合。
      IOException - 指定されたバイト数に対して、プッシュバック・バッファに十分なスペースがない場合、またはこの入力ストリームがそのclose()メソッドの呼出しによって閉じられた場合。
      導入されたバージョン:
      1.1
    • available

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

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

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

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

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

      オーバーライド:
      skip、クラス: FilterInputStream
      パラメータ:
      n - スキップされるバイト数。
      戻り値:
      実際にスキップされたバイト数。
      例外:
      IOException - close()メソッドを呼び出してストリームをクローズした場合、in.skip(n)がIOExceptionをスローするか、I/Oエラーが発生します。
      導入されたバージョン:
      1.2
      関連項目:
    • markSupported

      public boolean markSupported()
      この入力ストリームがmarkおよびresetメソッドをサポートしているかどうかを判定します。これらのメソッドはサポートされていません。
      オーバーライド:
      markSupported、クラス: FilterInputStream
      戻り値:
      このクラスはmarkメソッドとresetメソッドをサポートしていないので、false
      関連項目:
    • mark

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

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

      オーバーライド:
      mark、クラス: FilterInputStream
      パラメータ:
      readlimit - マーク位置が無効になる前に読込み可能なバイト数の上限。
      関連項目:
    • reset

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

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

      オーバーライド:
      reset、クラス: FilterInputStream
      例外:
      IOException - このメソッドが呼び出された場合。
      関連項目:
    • close

      public void close() throws IOException
      この入力ストリームを閉じて、そのストリームに関連するすべてのシステム・リソースを解放します。 ストリームが閉じられたあとにread()、unread()、available()、reset()、またはskip()を呼び出すと、IOExceptionがスローされます。 すでに閉じられているストリームを閉じても、何の影響もありません。
      定義:
      close、インタフェース: AutoCloseable
      定義:
      close、インタフェース: Closeable
      オーバーライド:
      close、クラス: FilterInputStream
      例外:
      IOException - 入出力エラーが発生した場合。
      関連項目: