最近公司讓我寫個小模塊,完成序列化的底層設計
現在XMLFormatter已經完成,要繼續完成BinaryFormatter
在網上搜索了一下,到處都是關于framework里面Formatter的使用的說明,沒有原理方面的介紹,實在不知道該如何下手
基本就是要實現將類轉換成二進制信息序列化進文件里面
???
String str;
BinaryFormatter xml;
File file;
xml.Serialize(&file,&str);
呵呵 還有反序列化 省略了
?
醬壇子專注C++技術 在這里寫下自己的學習心得 感悟 和大家討論 共同進步(歡迎批評!!!) |
公告常用鏈接留言簿(19)我參與的團隊隨筆檔案(65)文章分類(16)文章檔案(16)相冊Blog List技術網站我的Blog搜索積分與排名
最新隨筆
最新評論
閱讀排行榜
評論排行榜 |
最近公司讓我寫個小模塊,完成序列化的底層設計 File file;
Feedback
序列化是將對象狀態轉換成可保持或傳輸的格式。
反序列化是將流轉換為對象。 序列化和反序列化的作用是:使數據能夠被輕松的存儲和傳輸。 實質上序列化機制是將類的值轉化為一個一般的(即連續的)字節流,然后就可以將該流寫到磁盤文件或任何其他流化目標上。而要想實際的寫出這個流,就要使用那些實現了IFormatter接口的類里的Serialize和Deserialize方法。 在.net框架里提供了這樣兩個類: BinaryFormatter:使用二進制格式化程序進行序列化。 SoapFormatter:以xml格式化 XmlSerializer類 DotNet中的序列化方法有三種:XML 序列化、SOAP 序列化和二進制序列化。若是序列化到文件的話,前兩者生成的是 XML 文件,二進制序列化生成二進制文件。 回復 更多評論
我這有一個轉換二進制的例子,要引用的命名空間有:System.Runtime.Serialization.Formatters.Binary;System.IO
static void Main(string[] args) { CreateSerializable(); ReadSerizlizable(); } /// <summary> /// 二進制序列化 /// </summary> public static void CreateSerializable() { MyObject obj = new MyObject(); obj.n1 = 1; obj.n2 = 24; obj.str = "haha"; System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("MyFile.bin",FileMode.Create,FileAccess.Write,FileShare.None); formatter.Serialize(stream,obj); stream.Close(); } /// <summary> /// 二進制反序列化 /// </summary> public static void ReadSerizlizable() { System.Runtime.Serialization.IFormatter formatter = new BinaryFormatter(); Stream stream = new FileStream("MyFile.bin",FileMode.Open,FileAccess.Read,FileShare.Read); MyObject obj = (MyObject)formatter.Deserialize(stream); stream.Close(); Console.Write(obj.n1.ToString() + "\n"); Console.Write(obj.n2.ToString() + "\n"); Console.Write(obj.str + "\n"); Console.Read(); } [Serializable] public class MyObject { public int n1 = 0; public int n2 = 0; public string str = null; } 回復 更多評論
|