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(第三方的)要损耗性能

  • 相关阅读:
    数据结构实验之栈四:括号匹配
    数据结构实验之栈三:后缀式求值
    8月7日学习
    8月6日学习
    8月5日学习
    8月4日学习
    周总结
    8月3日学习
    8月2日学习
    8月1日学习
  • 原文地址:https://www.cnblogs.com/xinyebs/p/3139339.html
Copyright © 2011-2022 走看看