zoukankan      html  css  js  c++  java
  • c#如何使用MemoryStream和BinaryFormatter进行对象的序列化和返序列化

    1 下面是我写的一个序列化的类

    public static class ObjSerialize
    {
    /// <summary>
    /// 将对象数组obj序列化,内存中的缓冲区的数据序列化
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public static byte[] Serialize(object obj)
    {
    byte[] arr = null;
    if (obj!=null)
    {
    //MemoryStream类用于向内存而不是磁盘读写数据
    using (MemoryStream ms=new MemoryStream())
    {
    //序列化操作,把内存中的东西写到硬盘中
    BinaryFormatter fomatter = new BinaryFormatter();
    fomatter.Serialize(ms, obj);
    ms.Flush();
    arr = ms.ToArray();
    }
    }
    return arr;
    }

    public static object Deserialize(byte[] arr)
    {
    object obj = null;
    using (MemoryStream ms=new MemoryStream())
    {
    ms.Write(arr, 0, arr.Length);
    ms.Flush();
    ms.Position = 0;
    BinaryFormatter formatter = new BinaryFormatter();
    obj= formatter.Deserialize(ms);
    }
    return obj;
    }
    }

    2 测试这个类

      我自己新建了一个student的对象,他只有id和name两个属性

     控制台测试代码这里需要吧student类标记为serializable

    Student stu = new Student()
    {
    ID = 1,
    Name = "王宝强"
    };

    byte[] arr= ObjSerialize.Serialize(stu);
    for (int i = 0; i < arr.Length; i++)
    {
    Console.WriteLine(arr[i]);
    }

    结果如下:

    反序列化的测试代码和结果如下

    Student ss= (Student)ObjSerialize.Deserialize(arr);
    Console.WriteLine("{0}----{1}",ss.ID,ss.Name);

  • 相关阅读:
    UiAutomator自动化测试框架介绍
    mongkeyrunner实现循环随机输入值的方法
    python出输出字符串方式:
    Python之字符串小代码解析
    安装JDK,Python SDK及环境变量的配置
    Monkeyrunner小脚本关于camera的使用
    ubuntu 下安装32位库 ia32-libs方法
    关于monkeyrunner的一些初步理解性的题目
    基于redis的限流
    表单防重复提交
  • 原文地址:https://www.cnblogs.com/mibing/p/5808078.html
Copyright © 2011-2022 走看看