2 回答

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
我想解決這個(gè)問題的方法是,將所有對(duì)象放入一個(gè) ArrayList 并通過對(duì)象序列化將該 ArrayList 寫入文件。如果要向其中添加新對(duì)象,請(qǐng)通過反序列化將保存的 ArrayList 取回,然后附加新對(duì)象并將 ArrayList 放回文件。

TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超21個(gè)贊
創(chuàng)建新的 ObjectOutputStream 時(shí),會(huì)寫入初始字節(jié)序列或標(biāo)頭。在的Java序列化規(guī)范所描述的那樣:
溪流:
魔法版內(nèi)容
因此,每次要追加時(shí)都創(chuàng)建一個(gè)新的 ObjectOutputStream 不是一種選擇。您將需要打開一個(gè)單一ObjectOuptutStream,并保持對(duì)它的引用。
順便說一句,op.write(0)
(寫一個(gè)零)與op.write(O)
(寫出引用在名稱為大寫字母 O 的變量中的對(duì)象)不同。這是O
變量名稱的一個(gè)非常糟糕的選擇的原因之一??紤]email
改為命名方法參數(shù)。
添加回答
舉報(bào)