trang này: http://blog.ostermiller.org/convert-java-outputstream-inputstream mô tả làm thế nào để tạo ra một InputStream từ OutputStream:Cách hiệu quả nhất để tạo ra InputStream từ OutputStream
new ByteArrayInputStream(out.toByteArray())
lựa chọn thay thế khác là sử dụng PipedStreams và chủ đề mới đó là cồng kềnh.
Tôi không thích ý tưởng sao chép nhiều megabyte sang mảng byte mới. Có thư viện nào thực hiện điều này hiệu quả hơn không?
EDIT:
Bằng lời khuyên từ Laurence Gonsalves, tôi đã cố gắng PipedStreams và nó bật ra họ không phải là khó khăn để giải quyết. Dưới đây là đoạn code mẫu trong 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))
Tôi nghĩ bạn cũng cần phải tạo PipedInputStream mới cho mỗi chủ đề người tiêu dùng. Nếu bạn đọc từ ống từ một sợi khác, nó sẽ cho bạn một lỗi. –
@Lawrence: Tôi không hiểu lý do của bạn để sử dụng 2 chủ đề ... KHÔNG CẦN nó là một yêu cầu tất cả các ký tự đọc từ InputStream được ghi vào OutputStream một cách kịp thời. –
Thx. Tôi bỏ qua PipedStreams lúc đầu bởi vì tôi nghĩ rằng nó sẽ là quá cồng kềnh để đối phó với họ. Hóa ra không có gì lớn cả, đặc biệt là từ clojure. –