• ## 序列化和反序列化


       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 : 张三|12
                     Person2   李四|12
                     Person3   王五|12
                XML文件
                    1.加载文件  
                    2.获取根节点
                    3.遍历节点 节点类型 XmlNode
                    List<Person>  
                    <Person>
                      <pname></pname>
                    </Person>
                     <Person>
                      <pname></pname>
                    </Person>
                     <Person>
                      <pname></pname>
                    </Person>
        1.序列化:保存对象的全景图
                     List<Person>----->保存对象到硬盘
                     
        2.案例 :保存3个人的信息到硬盘
           2.1定制一个Person
            //特性:说明该类可以被序列化
            [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();
      
  • 相关阅读:
    精华网站链接
    面向对象的CSS注意事项
    java 汉字按照指定字符集转换为二进制编码 并把二进制编码转换为对应的汉字 方法
    91环境
    windows下git代码提交情况统计
    git分支管理的使用案例及深入分析
    我在软件园二期的小花园捡起了一片树叶
    sslvpn连接:
    jetbrains register ways
    angular directive实现触底加载效果一则
  • 原文地址:https://www.cnblogs.com/SFHa/p/8907303.html
Copyright © 2020-2023  润新知