Ta strona: http://blog.ostermiller.org/convert-java-outputstream-inputstream zawiera opis sposobu tworzenia InputStream z OutputStream:
new ByteArrayInputStream(out.toByteArray())
Inną alternatywą jest użycie PipedStreams i nowych wątków, co jest uciążliwe.
Nie podoba mi się pomysł kopiowania wielu megabajtów do nowej tablicy bajtów pamięci. Czy istnieje biblioteka, która robi to wydajniej?
EDYTOWAĆ:
Za radą Laurence'a Gonsalvesa wypróbowałem PipedStreams i okazało się, że nie są one takie trudne. Oto przykładowy kod w 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))