このページからInputStreamを作成します。http://blog.ostermiller.org/convert-java-outputstream-inputstream はOutputStreamのからInputStreamを作成する方法について説明します。最も効率的な方法は、OutputStreamの
new ByteArrayInputStream(out.toByteArray())
他の選択肢は面倒ですPipedStreams、新たなスレッドを使用することです。
新しいメモリバイト配列に多くのメガバイトをコピーするというのは気に入らないです。 これをより効率的に行うライブラリはありますか?
EDIT:ローレンス・ゴンサルベスからのアドバイスにより、
、私は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))
:produceChunk(を繰り返し呼び出しによってチャンクでコンテンツを作成しProducerInputStream):
は、ここに私の提案されたソリューションです。別のスレッドからPipeを読み込むと、エラーが発生します。 –
@Lawrence:2つのスレッドを使用する理由を理解していません... InputStreamから読み込まれたすべての文字がタイムリーにOutputStreamに書き込まれる必要がある場合を除き、 –
Thx。最初はPipedStreamを見落としました。なぜなら、私はそれを扱うのが面倒すぎると思ったからです。大したことは何もなかった。特にクロジャレから。 –