【无标题】序列化\序列化和反序列化

代码部分

   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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值