using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
namespace 类的序列化和反序列化
{
class Program
{
static void Main(string[] args)
{
// 序列化:将对象转换成二进制
// 反序列化:将二进制转换成对象
// 作用:对象的传输
// 将一个类标记为可以序列化,在类的头上写上[Serializable]
// 1、将对象序列化成二进制,并写入文件。
Persion p = new Persion("张三", '男', 22);
// 用指定的文件实例化一个写入文件流对象。
using (FileStream fsWrite = new FileStream(@"D:\22.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
// 以二进制形式将对象序列化或反序列化
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fsWrite, p); // 序列化:将对象以二进制形式写入文件
}
Console.WriteLine("序列化成功");
Console.WriteLine("\r\n********华丽的分割线*******\r\n");
// 2、将二进制文件读取出来并反序列化成对象。
Persion pp = null;
using (FileStream fsRead = new FileStream(@"D:\22.txt", FileMode.OpenOrCreate, FileAccess.Read))
{
BinaryFormatter bff = new BinaryFormatter();
// 反序列化:将对象以二进制形式从文件中读取,然后转换成对象
pp = (Persion)bff.Deserialize(fsRead);
}
Console.WriteLine(pp.Name);
Console.WriteLine(pp.Sex);
Console.WriteLine(pp.Age);
Console.WriteLine("反序列化成功");
Console.ReadKey();
}
}
[Serializable] // 标记一个类可以被序列化
public class Persion
{
public string Name { get; set; }
public char Sex { get; set; }
public int Age { get; set; }
public Persion(string name, char sex, int age)
{
this.Name = name;
this.Sex = sex;
this.Age = age;
}
}
}