反序列化:就是将二进制转换成对象
作用:传输数据. 在网络上传输数据.
序列化步骤:
(1).将 要序列化的类标记为可以被序列化[serialzable]
BinaryFormatter 可以序列化对象的类
序列化一个对象:
namespace _05.序列化和反序列化的学习
{
class Program
{
static void Main(string[] args)
{
Person p = new Person();
p.Name = "张三";
p.Age = 18;
p.Gender = '男';
using (FileStream fsWrite = new FileStream("被有一个对象被序列化.txt", FileMode.OpenOrCreate, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter(); //序列化对象的类
bf.Serialize(fsWrite, p); //将需要序列化的对象,写入到指定的文件
}
Console.WriteLine("序列化完成");
Console.ReadKey();
}
}
[Serializable] //将Person类标记为可以被序列化的类
public class Person
{
private string _name;
private int _age;
private char _gender;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
public char Gender
{
get
{
return _gender;
}
set
{
_gender = value;
}
}
}
}
反序列一个流:
namespace _05.序列化和反序列化的学习
{
class Program
{
static void Main(string[] args)
{
//Person p = new Person();
//p.Name = "张三";
//p.Age = 18;
//p.Gender = '男';
//using (FileStream fsWrite = new FileStream("被有一个对象被序列化.txt", FileMode.OpenOrCreate, FileAccess.Write))
//{
// BinaryFormatter bf = new BinaryFormatter(); //序列化对象的类
// bf.Serialize(fsWrite, p); //将需要序列化的对象,写入到指定的文件
//}
//Console.WriteLine("序列化完成");
//Console.ReadKey();
//接收对方发过来的二进制(假设,模拟的)
//反序列化成对象
Person p = null;
using (FileStream fsRead = new FileStream("被有一个对象被序列化.txt", FileMode.Open, FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter(); //反序列
p=(Person)bf.Deserialize(fsRead); //反序列化读取到的文件流
}
Console.WriteLine(p.Name);
Console.WriteLine(p.Age);
Console.WriteLine(p.Gender);
Console.WriteLine("反序列化成功");
Console.ReadKey();
}
}
[Serializable] //将Person类标记为可以被序列化的类
public class Person
{
private string _name;
private int _age;
private char _gender;
public string Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
public int Age
{
get
{
return _age;
}
set
{
_age = value;
}
}
public char Gender
{
get
{
return _gender;
}
set
{
_gender = value;
}
}
}
}