List<Person> list = new List<Person>();
Person p1 = new Person(); p1.Name = "邓超"; p1.Age = 12; Person p2 = new Person();p2.Name = "Baby"; p2.Age =22; Person p3 = new Person();p3.Name = "范冰冰"; p3.Age = 32; list.Add(p1); list.Add(p2); list.Add(p3); ## 序列化和反序列化 0.内存中数据---->硬盘 手段:IO流 1.用IO操作文本文件 2.File Directory 操作文件和目录 3.使用FileInfo和DirecoryInfo操作文件和目录 List<Person> Person1 :Zhang San|12
Person2 Li Si|12
Person3 Wang Wu|12
XML file
1. Load file
2. Get root node
3. Traverse nodes Node type XmlNode
List<Person>
<Person>
<pname></pname>
</Person>
<Person>
< pname></pname>
</Person>
<Person>
<pname></pname>
</Person>
1. Serialization: Save the panorama of the object
List<Person>----->Save the object to the hard disk 2. Case: Save the information of 3 people to the hard disk 2.1 Customize a Person //Feature: Explain that the class can be serialized
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
2.2 在Main函数中形成一个集合,保存3个Person实例
List<Person> list = new List<Person>();
Person p1 = new Person();
p1.Name = "邓超";
p1.Age = 12;
Person p2 = new Person();
p2.Name = "Baby";
p2.Age =22;
Person p3 = new Person();
p3.Name = "范冰冰";
p3.Age = 32;
list.Add(p1);
list.Add(p2);
list.Add(p3);
2.3 通过二进制序列化器完成工具
Person p1 = new Person(); p1.Name = "邓超"; p1.Age = 12; Person p2 = new Person();p2.Name = "Baby"; p2.Age =22; Person p3 = new Person();p3.Name = "范冰冰"; p3.Age = 32; list.Add(p1); list.Add(p2); list.Add(p3); ## 序列化和反序列化 0.内存中数据---->硬盘 手段:IO流 1.用IO操作文本文件 2.File Directory 操作文件和目录 3.使用FileInfo和DirecoryInfo操作文件和目录 List<Person> Person1 :Zhang San|12
Person2 Li Si|12
Person3 Wang Wu|12
XML file
1. Load file
2. Get root node
3. Traverse nodes Node type XmlNode
List<Person>
<Person>
<pname></pname>
</Person>
<Person>
< pname></pname>
</Person>
<Person>
<pname></pname>
</Person>
1. Serialization: Save the panorama of the object
List<Person>----->Save the object to the hard disk 2. Case: Save the information of 3 people to the hard disk 2.1 Customize a Person //Feature: Explain that the class can be serialized
[Serializable]
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
2.2 在Main函数中形成一个集合,保存3个Person实例
List<Person> list = new List<Person>();
Person p1 = new Person();
p1.Name = "邓超";
p1.Age = 12;
Person p2 = new Person();
p2.Name = "Baby";
p2.Age =22;
Person p3 = new Person();
p3.Name = "范冰冰";
p3.Age = 32;
list.Add(p1);
list.Add(p2);
list.Add(p3);
2.3 通过二进制序列化器完成工具
2.4 如何保证类中成员都可以被序列化?
解析:系统的类型都是默认支持序列化的,例如int和string
[Serializable]
[ComVisible(true)]
public sealed class String :
[Serializable]
[ComVisible(true)]
public struct Int32 :
Type 'Day10_0100序列化.Car' in Assembly(程序集) 'Day10_0100序列化, Version= 1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
3.可以使用序列化手段加密码?
解析:答案是否定的。序列化是可逆的。 MD5加密算法是不可逆的。
https://howsecureismypassword.net/
4.反序列化
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("save.bin",FileMode.Open);
List<Person> list= (List<Person>)bf.Deserialize(fs);
foreach (Person item in list)
{
Console.WriteLine( item.Name);
}
Console.ReadKey();
解析:系统的类型都是默认支持序列化的,例如int和string
[Serializable]
[ComVisible(true)]
public sealed class String :
[Serializable]
[ComVisible(true)]
public struct Int32 :
Type 'Day10_0100序列化.Car' in Assembly(程序集) 'Day10_0100序列化, Version= 1.0.0.0, Culture=neutral, PublicKeyToken=null' is not marked as serializable.
3.可以使用序列化手段加密码?
解析:答案是否定的。序列化是可逆的。 MD5加密算法是不可逆的。
https://howsecureismypassword.net/
4.反序列化
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("save.bin",FileMode.Open);
List<Person> list= (List<Person>)bf.Deserialize(fs);
foreach (Person item in list)
{
Console.WriteLine( item.Name);
}
Console.ReadKey();