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

クラスPipedInputStream

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


    public class PipedInputStream
    extends InputStream
    パイプで連結された入力ストリームは、パイプで連結された出力ストリームに接続するようにします。これによって、パイプで連結された入力ストリームが提供するデータ・バイトは、パイプで連結された出力ストリームにすべて書き込まれます。 通常、データは1つのスレッドによってPipedInputStreamオブジェクトから読み込まれ、対応するPipedOutputStreamに別のスレッドによって書き込まれます。 単一のスレッドから両方のオブジェクトを使用することは、スレッドがデッドロックする可能性があるため推奨されていません。 パイプで連結された入力ストリームには一定範囲のバッファが含まれるため、読込み操作と書込み操作は分離されます。 接続済のパイプで連結された出力ストリームにデータ・バイトを提供していたスレッドが生存しなくなった場合は、パイプが壊れていると呼ばれます。
    導入されたバージョン:
    1.0
    関連項目:
    PipedOutputStream
    • フィールドのサマリー

      フィールド 
      修飾子と型 フィールド 説明
      protected byte[] buffer
      入ってくるデータを置く循環バッファです。
      protected int in
      データの次のバイトをパイプで連結された接続済みの出力ストリームから受け取ったときに、その次のバイトを格納する循環バッファのインデックス位置です。
      protected int out
      パイプで連結されたこの入力ストリームがデータの次のバイトを読み込む、循環バッファのインデックス位置です。
      protected static int PIPE_SIZE
      パイプの循環入力バッファのデフォルト・サイズです。
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      PipedInputStream​()
      PipedInputStreamを、まだ接続されないように作成します。
      PipedInputStream​(int pipeSize)
      PipedInputStreamを、まだ接続されないように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。
      PipedInputStream​(PipedOutputStream src)
      PipedInputStreamを、パイプで連結された出力ストリームsrcに接続されるように作成します。
      PipedInputStream​(PipedOutputStream src, int pipeSize)
      PipedInputStreamを、パイプで連結された出力ストリームsrcに接続されるように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。
    • フィールドの詳細

      • PIPE_SIZE

        protected static final int PIPE_SIZE
        パイプの循環入力バッファのデフォルト・サイズです。
        導入されたバージョン:
        1.1
        関連項目:
        定数フィールド値
      • buffer

        protected byte[] buffer
        入ってくるデータを置く循環バッファです。
        導入されたバージョン:
        1.1
      • in

        protected int in
        データの次のバイトをパイプで連結された接続済みの出力ストリームから受け取ったときに、その次のバイトを格納する循環バッファのインデックス位置です。in<0はバッファが空であることを示し、in==outはバッファがいっぱいであることを示します。
        導入されたバージョン:
        1.1
      • out

        protected int out
        パイプで連結されたこの入力ストリームがデータの次のバイトを読み込む、循環バッファのインデックス位置です。
        導入されたバージョン:
        1.1
    • コンストラクタの詳細

      • PipedInputStream

        public PipedInputStream​(PipedOutputStream src)
                         throws IOException
        PipedInputStreamを、パイプで連結された出力ストリームsrcに接続されるように作成します。 srcに書き込まれたデータ・バイトは、このストリームからの入力として使えるようになります。
        パラメータ:
        src - 接続先のストリーム。
        例外:
        IOException - 入出力エラーが発生した場合。
      • PipedInputStream

        public PipedInputStream​(PipedOutputStream src,
                                int pipeSize)
                         throws IOException
        PipedInputStreamを、パイプで連結された出力ストリームsrcに接続されるように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。 srcに書き込まれたデータ・バイトは、このストリームからの入力として使えるようになります。
        パラメータ:
        src - 接続先のストリーム。
        pipeSize - パイプのバッファのサイズ。
        例外:
        IOException - 入出力エラーが発生した場合。
        IllegalArgumentException - pipeSize <= 0の場合。
        導入されたバージョン:
        1.6
      • PipedInputStream

        public PipedInputStream​()
        PipedInputStreamを、まだ接続されないように作成します。 使用前に、それをPipedOutputStream接続する必要があります。
      • PipedInputStream

        public PipedInputStream​(int pipeSize)
        PipedInputStreamを、まだ接続されないように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。 使用前に、それをPipedOutputStream接続する必要があります。
        パラメータ:
        pipeSize - パイプのバッファのサイズ。
        例外:
        IllegalArgumentException - pipeSize <= 0の場合。
        導入されたバージョン:
        1.6
    • メソッドの詳細

      • connect

        public void connect​(PipedOutputStream src)
                     throws IOException
        パイプで連結された入力ストリームをパイプで連結された出力ストリームsrcに接続します。 このオブジェクトが別のパイプで連結された出力ストリームにすでに接続されている場合は、IOExceptionがスローされます。

        srcがパイプによる未接続の出力ストリームで、snkがパイプによる未接続の入力ストリームである場合、2つのストリームは以下の呼出しのどちらかによって接続されます。

        snk.connect(src) 

        または

        src.connect(snk) 

        2つの呼出しは同じ効果を持ちます。

        パラメータ:
        src - パイプによる接続先の出力ストリーム。
        例外:
        IOException - 入出力エラーが発生した場合。
      • receive

        protected void receive​(int b)
                        throws IOException
        データのバイトを受け取ります。 このメソッドは、有効な入力がない場合はブロックします。
        パラメータ:
        b - 受け取るバイト
        例外:
        IOException - パイプが brokenの状態である場合、unconnectedの状態である場合、閉じられている場合、または入出力エラーが発生した場合。
        導入されたバージョン:
        1.1
      • read

        public int read​()
                 throws IOException
        パイプで連結された入力ストリームからデータの次のバイトを読み込みます。 バイト値は、0 - 255の範囲のintとして返されます。 入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。
        定義:
        read、クラス: InputStream
        戻り値:
        データの次のバイト。ストリームの終わりに達した場合は-1
        例外:
        IOException - パイプがunconnectedの状態である場合、 brokenの状態である場合、閉じられている場合、または入出力エラーが発生した場合。
      • read

        public int read​(byte[] b,
                        int off,
                        int len)
                 throws IOException
        最大lenバイトのデータを、このパイプで連結された入力ストリームからバイト配列に読み込みます。 データ・ストリームの終わりに達した場合、またはlenバイトがパイプのバッファ・サイズを超えている場合、lenバイトより少ないデータが読み込まれます。 len が0の場合、読み込まれるバイトはなく、0が返されます。そうでない場合、少なくとも1バイトの入力が利用できるようになるか、ストリームの終わりに達するか、例外がスローされるまでメソッドはブロックします。
        オーバーライド:
        read、クラス: InputStream
        パラメータ:
        b - データの読込み先のバッファ。
        off - 転送先配列bの開始オフセット
        len - 読み込まれる最大バイト数。
        戻り値:
        バッファに読み込まれたバイトの合計数。ストリームの終わりに達してデータがない場合は-1
        例外:
        NullPointerException - bnullである場合。
        IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、あるいはlenb.length - offより大きい場合
        IOException - パイプが brokenの状態である場合、unconnectedの状態である場合、閉じられている場合、または入出力エラーが発生した場合。
        関連項目:
        InputStream.read()
      • available

        public int available​()
                      throws IOException
        ブロックせずに入力ストリームから読み込むことができるバイト数を返します。
        オーバーライド:
        available、クラス: InputStream
        戻り値:
        この入力ストリームからブロックせずに読み込むことができるバイト数。あるいは、この入力ストリームがclose()メソッドを呼び出すことにより閉じられた場合、またはパイプがunconnected brokenの状態である場合は0
        例外:
        IOException - 入出力エラーが発生した場合。
        導入されたバージョン:
        1.0.2
      • close

        public void close​()
                   throws IOException
        パイプによる入力ストリームを閉じ、そのストリームに関連するすべてのシステム・リソースを解放します。
        定義:
        close、インタフェース: AutoCloseable
        定義:
        close、インタフェース: Closeable
        オーバーライド:
        close、クラス: InputStream
        例外:
        IOException - 入出力エラーが発生した場合。