zoukankan      html  css  js  c++  java
  • 序列化反序列化的简单例子

    基本序列化
    要使一个类可序列化,最简单的方法是使用 Serializable 属性对它进行标记,如下所示:

    [Serializable]
    public class MyObject {
       public int n1 = 0;
       public int n2 = 0;
       public String str = null;
    }
    以下代码片段说明了如何将此类的一个实例序列化为一个文件:

    MyObject obj = new MyObject();
    obj.n1 = 1;
    obj.n2 = 24;
    obj.str = "一些字符串";
    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream("MyFile.bin", FileMode.Create, 
    FileAccess.Write, FileShare.None);
    formatter.Serialize(stream, obj);
    stream.Close();
    本例使用二进制格式化程序进行序列化。您只需创建一个要使用的流和格式化程序的实例,然后调用格式化程序的 Serialize 方法。流和要序列化的对象实例作为参数提供给此调用。类中的所有成员变量(甚至标记为 private 的变量)都将被序列化,但这一点在本例中未明确体现出来。在这一点上,二进制序列化不同于只序列化公共字段的 XML 序列化程序。

    将对象还原到它以前的状态也非常容易。首先,创建格式化程序和流以进行读取,然后让格式化程序对对象进行反序列化。以下代码片段说明了如何进行此操作。

    IFormatter formatter = new BinaryFormatter();
    Stream stream = new FileStream("MyFile.bin", FileMode.Open, 
    FileAccess.Read, FileShare.Read);
    MyObject obj = (MyObject) formatter.Deserialize(fromStream);
    stream.Close();

    // 下面是证明
    Console.WriteLine("n1: {0}", obj.n1);
    Console.WriteLine("n2: {0}", obj.n2);
    Console.WriteLine("str: {0}", obj.str);
  • 相关阅读:
    阿里云服务器常见问题记录
    npm 常见错误记录
    C程序设计(第四版)课后习题完整版 谭浩强编著
    博客如何快速让百度谷歌等各大引擎收录
    python itertools 用法
    python中dict的fromkeys用法
    python解析XML
    flask+uwsgi+nginx+docker-compose部署
    python的构建工具setup.py
    python判断字符串类型
  • 原文地址:https://www.cnblogs.com/yongheng178/p/1970525.html
Copyright © 2011-2022 走看看