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);
  • 相关阅读:
    [转]html js中name和id的区别和使用分析
    【转】JSP中文乱码问题终极解决方案
    jsp内置对象作业3-application用户注册
    jsp内置对象作业2-留言簿
    jsp内置对象作业1-用户登录
    【转】HTTP协议详解
    [转]response.getWriter().write()与out.print()的区别
    [转]Cookie/Session机制详解
    【转】伪类选择器
    【转】Web前端浏览器兼容初探
  • 原文地址:https://www.cnblogs.com/yongheng178/p/1970525.html
Copyright © 2011-2022 走看看