如果我有一个方法需要一个OutputStream(来自第三方库),另一个方法需要一个InputStream(再次来自第三方库)。将两者结合在一起的最佳做法是什么?基本上我需要某种对象来提供连接的InputStream和OutputStream。
我想到了一种使用SynchronousQueue的方法,但是必须将每个原始字节转换和取消转换为Object Byte听起来不是一个好主意。
我不想使用临时文件,并且缓存整个InputStream是不可能的,因为数据可能非常大。
编辑:另外,如果可能的话,我想保留这个单线程。
这里的最佳做法是什么?
编辑:我需要澄清一下:我没有InputStream或OutputStream,只有两种方法。一个期望OutputStream将数据写入,另一个期望InputStream从中读取数据。
答案 0 :(得分:1)
如果数据不是很大
ByteArrayOutputStream -> byte[] -> ByteArrayInputStream
,否则
PipedInputStream + PipedOutputStream
需要2个主题,因为java不支持" coroutine"
答案 1 :(得分:0)
您可以使用公共IOUtils的一种复制方法,即
static int copy(InputStream input, OutputStream output)
将InputStream中的字节复制到OutputStream。