我試圖將gob編碼的數(shù)據(jù)保存在磁盤上的文件中作為一個(gè)簡單的數(shù)據(jù)存儲(chǔ)。但是,當(dāng)我下次打開它時(shí),gob 編碼器會(huì)忽略文件中已有的任何數(shù)據(jù),并在發(fā)送數(shù)據(jù)之前重新發(fā)送已發(fā)送格式的定義??吹剿黦ob.Encoder需要一個(gè)io.Writer,而不是一個(gè)io.ReadWriter,這是有道理的。編碼器不知道文件中的內(nèi)容,因?yàn)樗鼰o法從中讀取。然而,這是非常低效的。它也不必要地難以解析,因?yàn)槊看尉幋a器在寫入文件時(shí)重新啟動(dòng)時(shí),您都必須重置解碼器,因?yàn)?gob 類型 ID 可能已更改。如何繼續(xù)寫入包含 gob 數(shù)據(jù)的文件的末尾?我是否必須創(chuàng)建一個(gè)新文件,移動(dòng)所有數(shù)據(jù),以便 gob 編碼器知道它已經(jīng)發(fā)送了什么類型,或者有沒有辦法告訴編碼器它應(yīng)該已經(jīng)知道什么類型,或者其他方式?我需要它跨軟件重啟工作。
1 回答

MMTTMM
TA貢獻(xiàn)1869條經(jīng)驗(yàn) 獲得超4個(gè)贊
無法使用其他編碼器在寫入 gob 值流時(shí)所具有的狀態(tài)來重建編碼器。如果在附加值時(shí)無法使用原始編碼器,那么您有幾個(gè)選擇:
按照您的建議移動(dòng)數(shù)據(jù)。
使用成幀機(jī)制將多個(gè) gob 流存儲(chǔ)到單個(gè)文件中。例如,您可以使用該流的長度作為每個(gè) gob 流的前綴。
- 1 回答
- 0 關(guān)注
- 253 瀏覽
添加回答
舉報(bào)
0/150
提交
取消