2015-02-24 51 views
0

我使用的是DataOutputStream類如下幾個寫串一個ByteArrayOutputStream:是否有可能幾個字符串和位圖添加到一個ByteArrayOutputStream

ByteArrayOutputStream byteStream = new ByteArrayOutputStream(); 
    DataOutputStream dataStream = new DataOutputStream(byteStream); 
    dataStream.writeUTF(string1); 
    etc. 

不過,我也想一個位圖添加到ByteArrayOutputStream 。 是否有可能首先使用DataOutputStream編寫字符串,然後使用write()將該位圖直接寫入ByteArrayOutputStream?

如何知道在寫入之後進行解壓縮時讀取的字節數? 或者是否可以在字符串寫入之後將ByteArrayOutputStream傳遞給Bitmap.compress()?

+0

您是否試過這樣做?您是否嘗試閱讀結果並處理內容? – 2015-02-24 19:32:02

回答

0

我不知道你爲什麼試圖做到這一點,但是... 在向dataStream寫入字符串之後,請對dataStream執行flush操作,並確保該流已準備好吃掉更多數據。接下來,您可以將位圖寫入byteStream。不要忘記刷新和關閉流。所有的操作應該在try塊中完成。將字符串寫入dataStream後,可以通過size()方法獲取當前的偏移量。

+0

如果它是一種奇怪的做事方式,那麼什麼是將幾個字符串和一個位圖捆綁到一個字節數組中的優雅方式(用於發送到RPC Api,接受任意有效載荷的字節數組) – Gruntcakes 2015-02-24 20:01:51

+0

它取決於什麼是另一邊。如果你已經定義了像你提到的協議(很少的字符串和位圖),那就OK了。但請記住,如果在其他方面是例如C++應用程序或不同的東西,它可能有閱讀Java字符串(UTF8編碼)的麻煩。 – 2015-02-24 20:17:09

+0

它的Java到Java,我控制一邊進行打包/發送和另一邊接收/解包的代碼。 – Gruntcakes 2015-02-24 20:34:32

相關問題