本页:http://blog.ostermiller.org/convert-java-outputstream-inputstream描述了如何从OutputStream创建一个InputStream:
new ByteArrayInputStream(out.toByteArray())
其他的选择是使用管道流和新线程,但这种方法很繁琐。
我不喜欢将许多兆字节复制到新的内存字节数组中的想法。是否有一个更有效率的库可以实现这一点?
编辑:
在Laurence Gonsalves的建议下,我尝试了使用PipedStreams,并发现它们并不难处理。以下是Clojure示例代码:
(defn #^PipedInputStream create-pdf-stream [pdf-info]
(let [in-stream (new PipedInputStream)
out-stream (PipedOutputStream. in-stream)]
(.start (Thread. #(;Here you write into out-stream)))
in-stream))
new Thread
不合适,那么请查看是否有可用的线程池可以使用。 - Laurence Gonsalves