代码部分
private static string Serializepath = ConfigurationManager.AppSettings["SerializePath"];
/// <summary>
/// 使用Binaryserialize序列化
/// 二进制序列化器
/// </summary>
public static void BanirySerialize()
{
string fileName = Path.Combine(Serializepath, "BanirySerialize.txt");
//序列化
using (Stream binStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{ //需要一个stream 直接创建或者写入文件
List<Publicfield> binaryList = DataFuctory.BuildProgramerList();
BinaryFormatter binary = new BinaryFormatter();//创建二进制序列化器
binary.Serialize(binStream, binaryList);
}
//反序列化
using (Stream binStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{//需要一个stream 直接读取文件
BinaryFormatter binary = new BinaryFormatter();//创建二进制序列化器件
//使用二进制反序列化对象
binStream.Position = 0;//重置流位置
List<Publicfield> binaryList = (List<Publicfield>)binary.Deserialize(binStream);//此处进行了强转换
}
}
/// <summary>
/// Soap序列化器
/// </summary>
public static void SoapSerialize()
{
string fileName = Path.Combine(Serializepath, "SopSerialize.txt");
using (Stream SoapStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
List<Publicfield> soaplist = DataFuctory.BuildProgramerList();//获取到相关参数
SoapFormatter soapFormatter = new SoapFormatter();//创建SOAP序列化器
soapFormatter.Serialize(SoapStream, soaplist.ToArray());//使用sop序列化必须转成Array
}
using (Stream SoapStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
List<Publicfield> soaplist = DataFuctory.BuildProgramerList();//获取到相关参数
SoapFormatter soapFormatter = new SoapFormatter();//创建SOAP序列化器
SoapStream.Position = 0;
soaplist = ((Publicfield[])soapFormatter.Deserialize(SoapStream)).ToList();//反序列化后存储
}
}
/// <summary>
/// 用xml序列化和反序化
/// </summary>
public static void XmlSerialize()
{
string fileName = Path.Combine(Serializepath, "XmlSerialize.xml");
using (Stream xmlStream = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.ReadWrite))
{
List<Publicfield> xmllist = DataFuctory.BuildProgramerList();
//此序列化器件之只能序列化public类
XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Publicfield>));//创建xml序列化器件,并传送一个可以序列化的类型
xmlSerializer.Serialize(xmlStream, xmllist);
}
using (Stream xmlStream = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
List<Publicfield> xmllist = DataFuctory.BuildProgramerList();
XmlSerializer xmlSerializer = new XmlSerializer(typeof(List<Publicfield>));//创建xml序列化器件,并传送一个可以序列化的类型
xmlStream.Position = 0;
xmllist = (List<Publicfield>)xmlSerializer.Deserialize(xmlStream);//反序列化只能传入stream类
foreach (Publicfield student in xmllist)
{
Console.WriteLine(student.Age);//打印出年龄
}
}
}
public static void Json()
{
string fileName = Path.Combine(Serializepath, "JsonSerialize.xml");
List<Publicfield> jsonList = DataFuctory.BuildProgramerList();
JavaScriptSerializer javaScriptSerializer = new JavaScriptSerializer();
string OutPut = javaScriptSerializer.Serialize(jsonList);
File.WriteAllText("outPut.Json", OutPut);
}
}
xaml部分
<appSettings>
<add key="SerializePath" value="E:\Program Files (x86)\vs2019\demo\IO和序列化\序列化和反序列化\bin\Debug" />
</appSettings>