2012-11-07 86 views
1

我需要合併到內部流,哪一個只有string,另一個是avi文件。我可以很容易地結合其中兩個,如下所示:劃分成兩條流

InputStream is = new SequenceInputStream(stringStream,aviStream);

但是,當涉及到分開的字符串和AVI,我失敗了。 avi文件與第一個尺寸不匹配,不知何故我失去了一些尺寸。

我可以通過使用delimiterisScanner,但在這種情況下,AVI流將String,我會丟失信息。

任何想法如何分離輸入流?我想讀回我的字符串,我應該把其餘的流作爲一個inpustream。

編輯:我正在考慮將流轉換爲字節數組,然後根據分隔符將數組分成兩部分。然後第二部分,這是avi,我可以將它轉換回輸入流。但它似乎很麻煩。

回答

3

掃描儀僅用於文本數據,而不是二進制。二進制數據例如AVI可以包含每個字節值,這意味着沒有可以使用的分隔符,這些分隔符不會出現在數據中。

您可以通過以下方式將文本與原始數據組合在一起。

DataOutputStream dos = new DataOutputStream(...); 
dos.writeUTF(string); 
dos.writeInt(bytes.length); 
dos.write(bytes); 

扭轉你可以用DataInputStream所用的readUTF,的readInt和的readFully()

+0

所以你說,如果我稱之爲的readUTF它會給我只字符串,但我應該如何讀AVI過程?我認爲讀取全部讀取? – anvarik

+0

你讀了你用'readInt'寫的長度,創建一個這樣大小的'byte []',並在該字節數組上調用readFully。 –

+0

完美,非常感謝! – anvarik