zoukankan      html  css  js  c++  java
  • ## 序列化和反序列化

       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();
      
  • 相关阅读:
    HTML DOM 12 表格排序
    HTML DOM 10 常用场景
    HTML DOM 10 插入节点
    HTML DOM 09 替换节点
    HTML DOM 08 删除节点
    HTML DOM 07 创建节点
    022 注释
    024 数字类型
    005 基于面向对象设计一个简单的游戏
    021 花式赋值
  • 原文地址:https://www.cnblogs.com/SFHa/p/8907303.html
Copyright © 2011-2022 走看看