2016-01-28 28 views
0

有沒有辦法將DataOutputStream內容寫入ArrayString,無論它包含哪種類型的數據?DataOutputStream與數組

DataOutputStream output = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(String dataPath))); 

感謝

+0

您是否嘗試將它作爲對象存儲在數組中解析它包含的任何字符串? – James

+0

不,現在正在研究第二個。任何想法如何解析? –

+0

您可以使用ByteArrayOutputStream,如下面的鏈接*所示:http://stackoverflow.com/questions/2984538/how-to-use-bytearrayoutputstream-and-dataoutputstream-simultaneously-java* – Sunil

回答

1

使用ByteArrrayOutputStream。

https://docs.oracle.com/javase/7/docs/api/java/io/ByteArrayOutputStream.html

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
OutputStream os = new DataOutputStream(baos); 
os.write(...); 
byte[] data = baos.toByteArray(); 
String dataAsString = new String(data, "UTF-8"); // or whatever encoding you are using 

您可以使用以下策略,以及:

class CompositeOutputStream implements OutputStream { 
    private OutputStream first,second; 
    public CompositeOutputStream(OutputStream first, OutputStream second) { 
     this.first = first; 
     this.second=second; 
    } 

    public void write(int b) throws IOException { 
     first.write(b); 
     second.write(b); 
    } 

    // etc. 
} 

使用帶:

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
OutputStream os = new CompositeOutputStream(new DataOutputStream(...), baos); 
os.write(...); 
byte[] data = baos.toByteArray(); 
String dataAsString = new String(data, "UTF-8"); // or whatever encoding you are using 
// etc. 

的什麼是 「BAOS」 只是 「鏡」寫到你原來的DataOutputStream

你仍然需要正確處理異常,並小心處理寫入的數據量(將內存中的所有內容都可能導致內存不足)等。

+0

是否有可能將DataOutPutStream的內容複製到ByteArrayOutputStream?使用除DataOutputStream之外的其他東西不是一個選項 –

+0

您的意思是,在寫完所有內容之後,您需要獲取已生成內容的「日誌」?恐怕基本庫中不存在這樣的內容,但您可以輕鬆地實現它(使用複合模式)。看看我的編輯 – spi

+0

是的,最終的結果已經在DataOutPutStream裏面了。我想知道它沒有寫入文件。 –