2

重複の可能性:
入力ストリームを出力ストリームに接続する

(サードパーティのライブラリからの) OutputStream を期待するメソッドと、(サードパーティのライブラリからの) InputStream を期待する別のメソッドがあるとします。この 2 つを橋渡しするためのベスト プラクティスは何ですか? 基本的に、接続された InputStream と OutputStream の両方を提供する何らかのオブジェクトが必要です。

SynchronousQueue を使用するアプローチを考えましたが、各プリミティブ バイトをオブジェクト バイトに変換および非変換する必要があるのは、あまり良い考えではないように思えます。

データが非常に大きくなる可能性があるため、一時ファイルを使用しないことをお勧めします。InputStream 全体をバッファリングすることは問題外です。

編集:また、可能であれば、これをシングルスレッドのままにしたいと思います。

ここでのベストプラクティスは何ですか?

編集:明確にする必要があります:私は InputStream または OutputStream を持っていません.2つのメソッドしかありません. 1 つは OutputStream がデータを書き込むことを想定し、もう 1 つは InputStream がデータを読み取ることを想定しています。

4

2 に答える 2

1

データが大きくない場合

ByteArrayOutputStream -> byte[] -> ByteArrayInputStream

それ以外は

PipedInputStream + PipedOutputStream

Javaは「コルーチン」をサポートしていないため、2つのスレッドが必要です

于 2012-10-12T20:53:51.443 に答える
0

Commons IOUtils のコピー方法の 1 つを使用できます。つまり、

static int  copy(InputStream input, OutputStream output) 

          InputStream から OutputStream にバイトをコピーします。

于 2012-10-12T20:45:46.310 に答える