2

可能重复:
将输入流连接到输出流

如果我有一个需要 OutputStream(来自第三方库)的方法,以及另一个需要 InputStream(同样来自第三方库)的方法。将两者连接在一起的最佳做法是什么?基本上我需要某种对象来提供连接的 InputStream 和 OutputStream 。

我想到了一种使用 SynchronousQueue 的方法,但是必须将每个原始字节转换和取消转换为对象字节听起来不是一个好主意。

我宁愿不使用临时文件,而且缓冲整个 InputStream 是不可能的,因为数据可能非常大。

编辑:另外,如果可能的话,我想保持这个单线程。

这里的最佳做法是什么?

编辑:我需要澄清:我没有 InputStream 或 OutputStream,只有两种方法。一个期望 OutputStream 向其中写入数据,另一个期望 InputStream 从中读取数据。

4

2 回答 2

1

如果数据不是很大

ByteArrayOutputStream -> byte[] -> ByteArrayInputStream

除此以外

PipedInputStream + PipedOutputStream

这需要 2 个线程,因为 java 不支持“协程”

于 2012-10-12T20:53:51.443 回答
0

可以使用commons IOUtils的其中一种拷贝方法,即

static int  copy(InputStream input, OutputStream output) 

          将字节从 InputStream 复制到 OutputStream。

于 2012-10-12T20:45:46.310 回答