簡體   English   中英

如何將多個對象寫入文件?

[英]How to write multiple objects to file?

我想將多個對象寫入一個文件,但是問題是我沒有一次寫入所有對象。 我必須編寫一個對象,然后關閉文件,然后也許在某個時間之后,我想向同一文件中添加另一個對象。

我目前正在以FileOutputStream("filename", true)以便它將對象附加到文件的末尾,而不是覆蓋它。 但是我得到這個錯誤:

java.io.StreamCorruptedException:無效的類型代碼:AC

有什么想法可以解決這個問題嗎?

謝謝,

一種選擇是將文件分段為單獨的消息。 當您想編寫一條消息時,首先將其序列化為ByteArrayOutputStream 然后打開要與DataOutputStream追加的文件-使用writeInt長度,然后寫入數據。

從流中讀取數據時,可以使用DataInputStream將其打開,然后重復調用readInt來查找下一條消息的長度,然后再次調用readFully來讀取消息本身。 將消息放入ByteArrayInputStream ,然后從中反序列化。

或者,使用比內置Java序列化更好的序列化格式-我是協議緩沖區的支持者,但有很多可用的替代方法。 內置序列化對於我來說太脆弱了。

您不能將不同的ObjectOutputStreams附加到同一文件。 您將不得不使用其他形式的序列化,或者讀入文件並將所有對象以及新對象寫出到新文件中。

您需要serialize / deserialize serialize List<T> 看一下這個 stackoverflow線程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM