目地:将数据写入文件中,保存到硬盘上,当需要这个文件中数据时,再反序列化
[Serializable]标记
实例化对象
找文件流
BinaryFormatte
Serialize()或Deserialize()
一、什么是序列化,反序列化?
序列化是将对象(类)转化为二进制数据文件或者XML后,保存到一个文件或数据库字段中去。反序列化是将保存在文件或数据库字段中的数据转化成原来的对象进行使用。
即:序列化类型有:
1) 二进制数据文件
2) XML数据
3) 还有一种Sop数据(不讨论)
二、如何进行序列化?
1、二进制形式
1)给类加上[Serializable]属性表示这个类是可以序列化,给字段加上[NonSerialized]表示此元素不被序列化
2)实例化对象 Person p = new Person(…,…,…);
3)找流,存储二进制数据FileStream…
4)找对象,BinaryFormatter
5)调用Serialize()方法
6)反序列化就是调用Deserialize()的过程,则将上在第5步变为:实例 =bf.Deserialize(fs)as 实例的对象;
实例:
class Program
{
static void Main(string[] args)
{
//序列化
Person p = new Person("李四", 19, '男');
using (FileStream fs = new FileStream("1.txt", FileMode.Create, FileAccess.Write))
{
BinaryFormatter bf = new BinaryFormatter();
bf.Serialize(fs, p);
}
//反序列化
Person p1;
using (FileStream fs = new FileStream("1.txt",FileMode.Open,FileAccess.Read))
{
BinaryFormatter bf = new BinaryFormatter();
p1 = bf.Deserialize(fs) as Person;
}
}
}
[Serializable]
class Person
{
[NonSerialized]
string _name;
int _age;
char _sex;
public Person(string name, int age, char sex)
{
_name = name;
_age = age;
_sex = sex;
}
public string Name
{
get { return _name; }
set { _name = value; }
}
public int Age
{
get { return _age; }
set { _age = value; }
}
public char Sex
{
get { return _sex; }
set { _sex = value; }
}
}
2、XML形式
待续...