我们常常需要将一些程序当前信息保存在文件中,如果明文保存,那么信息不安全,使用对象序列化和反序列化可解决此问题
1、将需要保存的信息封装成类,用Serializable标记
[Serializable]//次标记必须,以声明此student类可执行序列化操作
class Student
{
public string Name { get; set; }
public string Gender { get; set; }
public int Age { get; set; }
public DateTime Birthday { get; set; }
}
2、序列化操作
Student objStu = new Student()
{
Name = this.txtName.Text.Trim(),
Age = Convert.ToInt16(this.txtAge.Text.Trim()),
Gender = this.txtGender.Text.Trim(),
Birthday = Convert.ToDateTime(this.txtBirthday.Text.Trim())
};
//【1】创建文件流
FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Create);
//【2】创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
//【3】调用序列化方法
formatter.Serialize(fs, objStu);
//【4】关闭文件流
fs.Close();
3、反序列化
//【1】创建文件流
FileStream fs = new FileStream("C:\\objStu.obj", FileMode.Open);
//【2】创建二进制格式化器
BinaryFormatter formatter = new BinaryFormatter();
//【3】调用序列化方法
Student objStu = (Student)formatter.Deserialize(fs);
//【4】关闭文件流
fs.Close();
//显示对象属性
this.txtName.Text = objStu.Name;
this.txtAge.Text = objStu.Age.ToString();
this.txtGender.Text = objStu.Gender;
this.txtBirthday.Text = objStu.Birthday.ToShortDateString();