談?wù)勑蛄谢?,關(guān)于.net中的二進制序列化和xml序列化
序列化技術(shù),就是將對象持久存儲。 可以這樣理解:序列化就是將對象占用的內(nèi)存的數(shù)據(jù)copy到持久存儲設(shè)備,比如硬盤。序列化有什么用呢?
兩點作用:
1、持久的存儲對象狀態(tài);
2、分布式運算中傳遞數(shù)據(jù)的底層實現(xiàn)。
.Net框架封裝的序列化技術(shù)包含兩種,即 二進制序列化 和 xml序列化
(以下代碼都要求被序列化的對象的類型使用Serializable特征類)
二進制序列化的實現(xiàn) (using System.Runtime.Serialization.Formatters.Binary;)
序列化代碼:
- //打開文件流
- FileStream fs = new FileStream(保存序列化數(shù)據(jù)的文件路徑, FileMode.OpenOrCreate);
- //創(chuàng)建二進制序列化對象
- BinaryFormatter bf = new BinaryFormatter();
- //調(diào)用二進制序列化對象的序列化方法執(zhí)行序列化操作
- bf.Serialize(fs, 被序列化的對象);
- //關(guān)閉文件流
- fs.Close();
反序列化代碼:
- //打開文件流
- FileStream fs = new FileStream(保存序列化數(shù)據(jù)的文件路徑, FileMode.OpenOrCreate);
- //創(chuàng)建二進制序列化對象
- BinaryFormatter bf = new BinaryFormatter();
- //調(diào)用二進制序列化對象的反序列化方法執(zhí)行反序列化操作
- 從文件中反序列化得到的對象 = bf.Deserialize(fs) as 被序列化對象的類型;
- //關(guān)閉文件流
- fs.Close();
XML序列化的實現(xiàn)(using System.Xml.Serialization;)
序列化代碼:
- //打開文件流
- FileStream fs = new FileStream(保存序列化數(shù)據(jù)的文件路徑, FileMode.OpenOrCreate);
- //創(chuàng)建XML序列化對象
- XmlSerializer xs = new XmlSerializer(typeof(被序列化對象的類型));
- //調(diào)用XML序列化對象的序列化方法執(zhí)行序列化操作
- xs.Serialize(fs, 被序列化的對象);
- //關(guān)閉文件流
- fs.Close();
反序列化代碼:
- //打開文件流
- FileStream fs = new FileStream(保存序列化數(shù)據(jù)的文件路徑, FileMode.OpenOrCreate);
- //創(chuàng)建XML序列化對象
- XmlSerializer xs = new XmlSerializer(typeof(被序列化對象的類型));
- //調(diào)用XML序列化對象的反序列化方法執(zhí)行反序列化操作
- 從文件中反序列化得到的對象 = xs.Deserialize(fs) as 被序列化對象的類型;
- //關(guān)閉文件流
- fs.Close();
當(dāng)然這里所提供的是序列化和反序列化的默認(rèn)實現(xiàn),能應(yīng)付大多數(shù)運用。 特殊情況可以還需要重寫序列化的默認(rèn)實現(xiàn)。MSDN里面也有較詳細的示例代碼。
【編輯推薦】