第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

C# 怎么序列化多個(gè)不同的對(duì)象在文件內(nèi),然后依次反序列化取出。在線等求指教

C# 怎么序列化多個(gè)不同的對(duì)象在文件內(nèi),然后依次反序列化取出。在線等求指教

大話西游666 2018-12-06 17:31:22
有三個(gè)對(duì)象,依次用二進(jìn)制方式序列化到文件中,然后依次取出來。應(yīng)該怎么做,第一個(gè)對(duì)象取出來成功了,但是取第二個(gè)對(duì)象的時(shí)候出現(xiàn)了錯(cuò)誤:在分析完成之前遇到了流結(jié)尾 namespace ConsoleApplication5{ class Program { static void Main(string[] args) { Serialize(); Deserialize(); } static void Serialize() { A a = new A(); FileStream fs = new FileStream("DataFile.dat", FileMode.Open); BinaryWriter bw = new BinaryWriter(fs); MemoryStream ms = new MemoryStream(); // Construct a BinaryFormatter and use it to serialize the data to the stream. BinaryFormatter formatter = new BinaryFormatter(); try { formatter.Serialize(ms, a); byte[] tem = new byte[(int)ms.Length]; ms.Seek(0, SeekOrigin.Begin); ms.Read(tem, 0, (int)ms.Length); bw.Write(tem); ms.Close(); ms = new System.IO.MemoryStream(); string p = "123"; formatter.Serialize(ms, p); byte[] tem1 = new byte[(int)ms.Length]; ms.Seek(0, SeekOrigin.Begin); ms.Read(tem1, 0, (int)ms.Length); bw.Seek(0, SeekOrigin.End); bw.Write(tem1); bw.Flush(); bw.Close(); } catch (SerializationException e) { Console.WriteLine("Failed to serialize. Reason: " + e.Message); throw; } finally { //fs.Close(); } } static void Deserialize() { FileStream fs = new FileStream("DataFile.dat", FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); MemoryStream ms = new System.IO.MemoryStream(); byte[] a = new byte[145]; fs.Read(a, 0, 145); ms.Write(a, 0, 145); object x = formatter.Deserialize(ms); Console.WriteLine(x.GetType()); byte[] b = new byte[27]; fs.Seek(145, SeekOrigin.Begin); fs.Read(b,0,27); ms.Write(b, 0, 27); x = formatter.Deserialize(ms); Console.WriteLine(x.GetType()); fs.Close(); } } [Serializable] class A { string x = "122"; }}
查看完整描述

11 回答

?
函數(shù)式編程

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊

最簡(jiǎn)單的方式,把三個(gè)對(duì)象組合成一個(gè)大對(duì)象: public class Big {public A a;public B b;public C c;}
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

這快設(shè)計(jì)到東西很多,很難幾行或者幾十行搞定。可以去用下NDatabase,或者看下那個(gè)的代碼。主要就是解決這個(gè)問題的。
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
慕沐林林

TA貢獻(xiàn)2016條經(jīng)驗(yàn) 獲得超9個(gè)贊

這么復(fù)雜啊。。。。我覺得就是序列化成二進(jìn)制然后存入文件,然后依次按長(zhǎng)度取出
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
拉莫斯之舞

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊

@大芝麻: 如果只是簡(jiǎn)單的存儲(chǔ) ?然后拿出來,并且就是幾個(gè)幾十個(gè)對(duì)象直接序列化反序列化,直接用json存儲(chǔ)吧。
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊

@imfunny:Json存儲(chǔ)確實(shí)可行不過,存儲(chǔ)的數(shù)據(jù)有能夠直觀的看出來內(nèi)部信息。謝了
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

在序列化時(shí),三個(gè)對(duì)象之間是如何分隔的?
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
Helenr

TA貢獻(xiàn)1780條經(jīng)驗(yàn) 獲得超4個(gè)贊

@大芝麻: 那問題可能出在讀取流的操作時(shí),在反序列化第2個(gè)對(duì)象時(shí),流的讀取指針已經(jīng)跑到了流的結(jié)尾
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
寶慕林4294392

TA貢獻(xiàn)2021條經(jīng)驗(yàn) 獲得超8個(gè)贊

@dudu:? 推薦閱讀一個(gè)系列博文(重點(diǎn)是第5篇): C# 溫故而知新:Stream篇(—) C# 溫故而知新:Stream篇(二) C# 溫故而知新:Stream篇(三) C# 溫故而知新:Stream篇 (四) C# 溫故而知新:Stream篇(五) C# 溫故而知新:Stream篇(六)
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
慕勒3428872

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超6個(gè)贊

@dudu: 如你所說就是指針位置不正確導(dǎo)致的
查看完整回答
反對(duì) 回復(fù) 2018-12-09
?
炎炎設(shè)計(jì)

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個(gè)贊

做一個(gè)結(jié)構(gòu)體,然后把結(jié)構(gòu)體按序追加到文件中,C++存儲(chǔ)數(shù)據(jù)的模式都這樣,可以去看看大智慧的數(shù)據(jù)存儲(chǔ)方式。
查看完整回答
反對(duì) 回復(fù) 2018-12-09
  • 11 回答
  • 0 關(guān)注
  • 1073 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)