Esta página: http://blog.ostermiller.org/convert-java-outputstream-inputstream describe cómo crear un InputStream de OutputStream:forma más eficiente de crear InputStream de OutputStream
new ByteArrayInputStream(out.toByteArray())
Otras alternativas son utilizar PipedStreams y nuevos temas que es engorroso.
no me gusta la idea de la copia de varios megabytes a los nuevos en el conjunto de bytes de memoria. ¿Hay una biblioteca que hace esto de manera más eficiente?
EDIT:
Por consejo de Laurence Gonsalves, probé PipedStreams y resultó que no son tan difíciles de tratar. Aquí está el código de ejemplo en 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))
Creo que también es necesario crear una nueva PipedInputStream para cada hilo consumidor. Si lees de Pipe de otro hilo, te dará un error. –
@Lawrence: no entiendo su razón de ser para usar 2 hilos ... A MENOS QUE sea un requisito que todos los caracteres leídos de InputStream se escriban en OutputStream de manera oportuna. –
Thx. Pasé por alto PipedStreams al principio porque pensé que sería demasiado engorroso tratar con ellos. Resultó no ser un gran problema, especialmente de Clojure. –