static void Main(string[] args)
{
Person p1 = new Person();
p1.Name = "陈昱州";
p1.Age = 19;
//一:XML序列化
//XmlSerializer xml = new XmlSerializer(typeof(Person));
//using (FileStream fs = new FileStream("person.xml",FileMode.Create))
//{
// xml.Serialize(fs,p1);
//}
//Console.WriteLine(xml);
//Console.ReadKey();
//二:二进制序列化
//二进制序列化就是把对象变成流的过程,就是把对象变成byte[]
//将Person对象序列化后保存到磁盘上,要操作磁盘文件,用到文件流
//1、创建序列化器
//BinaryFormatter bf = new BinaryFormatter();
//1.1、创建一个文件流
//using (FileStream fsWrite = new FileStream("person.bin",FileMode.Create))
//{
// //2、开始执行序列化
// bf.Serialize(fsWrite, p1);
//}
//Console.WriteLine("序列化完毕");
//Console.ReadKey();
//三:json序列化
//JavaScriptSerializer jsSer = new JavaScriptSerializer();
//string msg = jsSer.Serialize(p1);
//Console.WriteLine(msg);
//Console.ReadKey();
//反序列化
//1、创建序列化器
BinaryFormatter bf = new BinaryFormatter();
//1.1创建读取文件的文件流
using (FileStream fsread = new FileStream("person.bin",FileMode.Open))
{
//2.执行反序列化
object obj = bf.Deserialize(fsread);
Person person = obj as Person;
Console.WriteLine(person.Age);
Console.WriteLine(person.Name);
}
Console.WriteLine("OK");
Console.ReadKey();
}
}
[Serializable] //二进制序列化需要加这个标志
public class Person
{
[NonSerialized] //标记不可序列化
private string _Name;
public string Name
{
get
{
return _Name;
}
set
{
_Name = value;
}
}
public int Age
{
get;set;
}
}