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, skip
protected 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
、クラス: InputStream
b
- データの読み込み先のバッファー。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
、クラス: InputStream
close()
メソッドを呼び出すことにより閉じられた場合、またはパイプが unconnected
や broken
の状態である場合は 0
。IOException
- 入出力エラーが発生した場合。public void close() throws IOException
close
、インタフェース: Closeable
close
、インタフェース: AutoCloseable
close
、クラス: InputStream
IOException
- 入出力エラーが発生した場合。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.