序列化的知识

序列化是将对象状态转换成可保持或传输的格式。
反序列化是将流转换为对象。
序列化和反序列化的作用是:使数据能够被轻松的存储和传输。
实质上序列化机制是将类的值转化为一个一般的(即连续的)字节流,然后就可以将该流写到磁盘文件或任何其他流化目标上。而要想实际的写出这个流,就要使用那些实现了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;
}
posted on 2006-06-14 14:51  IORICC  阅读(198)  评论(0编辑  收藏  举报