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

クラスPushbackInputStream

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


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

      フィールド 
      修飾子と型 フィールド 説明
      protected byte[] buf
      プッシュバック・バッファです。
      protected int pos
      プッシュバック・バッファ内の次のバイトの読込み位置です。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      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バイトをコピーすることによって、そのバイトをプッシュ・バックします。
    • フィールドの詳細

      • 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()メソッドの呼出しによって閉じられた場合、または入出力エラーが発生した場合。
        関連項目:
        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 - 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()メソッドの呼出しによって閉じられた場合。
        導入されたバージョン:
        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が負の場合、バイトはスキップされません。

        PushbackInputStreamskipメソッドは、ブッシュバック・バッファにバイトが存在すれば、最初にそれらをスキップします。 さらにスキップする必要があるバイトが存在すると、ベースとなる入力ストリームの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)
        この入力ストリームの現在位置にマークを設定します。

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

        オーバーライド:
        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