Gelen İnputStream oluşturmak için en verimli şekilde OutputStream
Bu sayfa: 6 min
OutputStream bir İnputStream oluşturma:
new ByteArrayInputStream(out.toByteArray())
Diğer alternatifler hantal olan PipedStreams ve yeni bir iş parçacığı kullanmak için.
Bellek Bayt dizisi Yeni için kaç megabayt kopyalama fikri hoşuma gitmedi. Bunu yapmak için izin veren bir kütüphane daha var mı ?
DÜZENLEME:
Laurence Gonsalves gelen tavsiye, PipedStreams çalıştım ve o kadar zor değil çıktı. İşte clojure örnek kod:
(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))
CEVAP
Eğer istemiyorsan kopyala tüm verileri bir bellek arabelleği tek seferde o zaman yapman gerek kodunuzu kullanan OutputStream (yapımcı) ve kodu kullanan İnputStream (tüketici) ya da alternatif olarak aynı iş parçacığı veya ameliyat aynı anda iki ayrı iş parçacıkları. Onları aynı iplik içinde faaliyet olması muhtemelen iki ayrı iş parçacıkları kullanarak çok daha karmaşık, çok daha fazla hata (tüketici . emin olmak gerekir eğilimli ^em>aslablok giriş bekliyor, ya da etkili bir şekilde kilitlenme) ve çok sıkı eşleşmiş görünüyor aynı döngü içinde üretici ve tüketici çalışan olması gerekli olur.
Kullanmak ikinci bir iş parçacığı. Bu gerçekten o kadar karmaşık değil. Bağlandığınız web sayfası mükemmel bir örnek vardı:
PipedInputStream in = new PipedInputStream();
PipedOutputStream out = new PipedOutputStream(in);
new Thread(
new Runnable(){
public void run(){
class1.putDataOnOutputStream(out);
}
}
).start();
class2.processDataFromInputStream(in);

En verimli şekilde sıfır JavaScript di...
Nasıl verimli bir şekilde düz bir yapı...
Nasıl verimli bir şekilde anahtarları/...
Nasıl verimli bir şekilde Gidip dizele...
Bir Java içeriğini yazmak için kolay b...