public class PipedInputStream extends InputStream
PipedInputStreamオブジェクトから読み込まれ、対応するPipedOutputStreamに別のスレッドによって書き込まれます。 単一のスレッドから両方のオブジェクトを使用することは、スレッドがデッドロックする可能性があるため推奨されていません。 パイプで連結された入力ストリームには一定範囲のバッファが含まれるため、読込み操作と書込み操作は分離されます。 接続済のパイプで連結された出力ストリームにデータ・バイトを提供していたスレッドが生存しなくなった場合は、パイプが壊れていると呼ばれます。 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に接続されるように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。 |
| 修飾子と型 | メソッド | 説明 |
|---|---|---|
int |
available() |
ブロックせずに入力ストリームから読み込むことができるバイト数を返します。
|
void |
close() |
パイプによる入力ストリームを閉じ、そのストリームに関連するすべてのシステム・リソースを解放します。
|
void |
connect(PipedOutputStream src) |
パイプで連結された入力ストリームをパイプで連結された出力ストリーム
srcに接続します。 |
int |
read() |
パイプで連結された入力ストリームからデータの次のバイトを読み込みます。
|
int |
read(byte[] b, int off, int len) |
最大
lenバイトのデータを、このパイプで連結された入力ストリームからバイト配列に読み込みます。 |
protected void |
receive(int b) |
データのバイトを受け取ります。
|
mark, markSupported, read, reset, skipprotected static final int PIPE_SIZE
protected byte[] buffer
protected int in
in<0はバッファが空であることを示し、in==outはバッファがいっぱいであることを示します。protected int out
public PipedInputStream(PipedOutputStream src) throws IOException
PipedInputStreamを、パイプで連結された出力ストリームsrcに接続されるように作成します。 srcに書き込まれたデータ・バイトは、このストリームからの入力として使えるようになります。 src - 接続先のストリーム。IOException - 入出力エラーが発生した場合。public PipedInputStream(PipedOutputStream src, int pipeSize) throws IOException
PipedInputStreamを、パイプで連結された出力ストリームsrcに接続されるように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。 srcに書き込まれたデータ・バイトは、このストリームからの入力として使えるようになります。 src - 接続先のストリーム。pipeSize - パイプのバッファのサイズ。IOException - 入出力エラーが発生した場合。IllegalArgumentException - pipeSize <= 0の場合。public PipedInputStream()
public PipedInputStream(int pipeSize)
PipedInputStreamを、まだ接続されないように作成します。その際、指定されたパイプ・サイズをパイプのバッファに使用します。 使用前に、それをPipedOutputStreamに接続する必要があります。 pipeSize - パイプのバッファのサイズ。IllegalArgumentException - pipeSize <= 0の場合。public void connect(PipedOutputStream src) throws IOException
srcに接続します。 このオブジェクトが別のパイプで連結された出力ストリームにすでに接続されている場合は、IOExceptionがスローされます。
srcがパイプによる未接続の出力ストリームで、snkがパイプによる未接続の入力ストリームである場合、2つのストリームは以下の呼出しのどちらかによって接続されます。
snk.connect(src)
または
src.connect(snk)
2つの呼出しは同じ効果を持ちます。
src - パイプによる接続先の出力ストリーム。IOException - 入出力エラーが発生した場合。protected void receive(int b)
throws IOException
b - 受け取るバイトIOException - パイプが brokenの状態である場合、unconnectedの状態である場合、閉じられている場合、または入出力エラーが発生した場合。public int read()
throws IOException
0 - 255の範囲のintとして返されます。 入力データが読み込めるようになるか、ストリームの終わりが検出されるか、または例外が発生するまで、このメソッドはブロックされます。 read、クラスInputStream-1。IOException - パイプがunconnectedの状態である場合、 brokenの状態である場合、閉じられている場合、または入出力エラーが発生した場合。public int read(byte[] b,
int off,
int len)
throws IOException
lenバイトのデータを、このパイプで連結された入力ストリームからバイト配列に読み込みます。 データ・ストリームの終わりに達した場合、またはlenバイトがパイプのバッファ・サイズを超えている場合、lenバイトより少ないデータが読み込まれます。 len が0の場合、読み込まれるバイトはなく、0が返されます。そうでない場合、少なくとも1バイトの入力が利用できるようになるか、ストリームの終わりに達するか、例外がスローされるまでメソッドはブロックします。 read、クラスInputStreamb - データの読込み先のバッファ。off - 転送先配列bの開始オフセットlen - 読み込まれる最大バイト数。-1。NullPointerException - bがnullである場合。IndexOutOfBoundsException - offが負の値の場合、lenが負の値の場合、あるいはlenがb.length - offより大きい場合IOException - パイプが brokenの状態である場合、unconnectedの状態である場合、閉じられている場合、または入出力エラーが発生した場合。InputStream.read()public int available()
throws IOException
available、クラスInputStreamclose()メソッドを呼び出すことにより閉じられた場合、またはパイプがunconnectedや brokenの状態である場合は0。IOException - 入出力エラーが発生した場合。public void close()
throws IOException
close、インタフェースCloseableclose、インタフェースAutoCloseableclose、クラスInputStreamIOException - 入出力エラーが発生した場合。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。 そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2025, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Documentation Redistribution Policyも参照してください。