zoukankan      html  css  js  c++  java
  • c#中对象序列化为二进制流

    首先创建一个对象

     [Serializable]  //一个对象要实现序列化,用特征类[Serializeable]来标示
        class SerilalizeObject
        {
            public int ID { get; set; }
            public string UserName { get; set; }
            public string Password { get; set; }
    
            [NonSerialized]//当不需要序列化时,用特征类[NoSerialize]来标示
            public string NoSerialize;
        }
    }

    代码实现

     static void Main(string[] args)
            {
                SerilalizeObj();
    
                DeSerilalize();
    
                Console.ReadKey();
    
            }
    
            private static void DeSerilalize()
            {
                SerilalizeObject NoSerilalize = new SerilalizeObject();
    
                FileStream OpenStream = new FileStream("test.txt", FileMode.Open);
    
                BinaryFormatter Noserilaze = new BinaryFormatter();
                try
                {
                    SerilalizeObject DeSerilalizeObj = (SerilalizeObject)Noserilaze.Deserialize(OpenStream);
    
                     Console.WriteLine("反序列化结果为:{0}-{1}-{2}", DeSerilalizeObj.ID,DeSerilalizeObj.UserName,DeSerilalizeObj.Password);
                }
                catch (Exception ex)
                {
    
                }
                finally
                {
                    OpenStream.Close();
                }
               
            }
            /// <summary>
            /// 序列化一个对象
            /// </summary>
            private static void SerilalizeObj()
            {
                SerilalizeObject obj = new SerilalizeObject { ID = 1, Password = "mima", UserName = "userName", NoSerialize = "No" };
    
                FileStream fs = new FileStream("test.txt", FileMode.Create);
                ///序列化二进制
                BinaryFormatter formatter = new BinaryFormatter();
                try
                {
                    formatter.Serialize(fs, obj);
                }
                catch (Exception ex)
                {
                }
                finally
                {
                    fs.Close();
                }
            }

    运行结果

    对于反序列化当然还是原样输出了创建的对象

    对于序列化我们打开文本文件,是乱码,什么都看打不开

    BinaryFormater 比ProtoBuf.net(第三方的)要损耗性能

  • 相关阅读:
    mysql性能调优与架构设计(一)商业需求与系统架构对性能的影响
    Android发送数据到web服务器4种方式
    Java 操作mongodb
    父子容器互相操作的方法
    Sql Server中查询当天,最近三天,本周,本月,最近一个月,本季度的数据的sql语句
    js实现多少秒后自动跳转
    插入数据返回插入的主键Id
    日期比较
    Cookie的增删改查
    js标准化价钱
  • 原文地址:https://www.cnblogs.com/xinyebs/p/3139339.html
Copyright © 2011-2022 走看看