`

Serialization(序列化) 示例

阅读更多

/*

下面的程序说明了怎样实现对象序列化和反序列化。它由实例化一个MyClass类的对象开始。该对象有三个实例变量,它们的类型分别是String,int和double。这是我们希望存储和恢复的信息。

FileOutputStream被创建,引用了一个名为“serial”的文件。为该文件流创建一个ObjectOutputStream。ObjectOutputStream 的writeObject( )方法用来序列化对象。对象的输出流被刷新和关闭。
然后,引用名为“serial”的文件创建一个FileInputStream类并为该文件创建一个ObjectInputStream类。ObjectInputStream 的readObject( )方法用来反序列化对象。然后对象输入流被关闭。
注意MyClass被定义成实现Serializable接口。如果不这样做,将会引发一个NotSerializableException异常。试图做一些把MyClass实例变量声明成transient的实验。那些数据在序列化过程中不被保存

*/

import java.io.*;
class MyClass implements Serializable{
 String s;
 int i;
 double d;
 public MyClass (String s,int i,double d){
  this.s = s;
  this.i = i;
  this.d = d;
 }
 public String toString(){
  return "s=" + s + "; i=" + i + "; d=" + d;
 }
}
class SerializationDemo{
 public static void main(String[] args){
  //Object serialization.
  try{
   MyClass object1 = new MyClass("Evan",9,9.9e10);
   System.out.println("object1 : " +object1);
   FileOutputStream fos = new FileOutputStream("serial");
   ObjectOutputStream oos = new ObjectOutputStream(fos);
   oos.writeObject(object1);
   oos.flush();
   oos.close();
  }catch(Exception e){
   System.out.println("Exception during serialization :" + e);
   System.exit(0);
  }
  //Object deserialization.
  try{
   MyClass object2 ;
   FileInputStream fis = new FileInputStream("serial");
   ObjectInputStream ois = new ObjectInputStream(fis);
   object2 = (MyClass)ois.readObject();
   ois.close();
   System.out.println("object2 : " +object2);
  }catch(Exception e){
   System.out.println("Exception during serialization :" + e);
   System.exit(0);
  }
 }
}

分享到:
评论

相关推荐

    序列化与反序列化示例

    在.NET框架中,序列化和反序列化是两个重要的概念,它们主要用来处理对象的状态转换。序列化是指将对象的状态转换为可以存储或传输的形式,如XML、JSON、二进制等;反序列化则是相反的过程,即从这种存储或传输的...

    .net中反射和序列化示例

    在“反射”文件中,可能包含如何使用反射创建和操作对象的代码示例,而“序列化”文件则可能包含各种序列化技术的演示,例如XML、JSON的序列化和反序列化实例。 了解和掌握反射与序列化,开发者可以构建更加灵活、...

    序列化示例代码

    本示例代码着重展示了如何将实体类序列化为Json和binary格式,这两种常见的序列化方式在IT行业中广泛应用。 1. **Json序列化**: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和...

    XML序列化与反序列化 实战

    XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在XML文件和...

    XML序列化示例 XML

    以下是一个简单的XML序列化示例: ```csharp using System; using System.IO; using System.Xml.Serialization; public class Person { public string Name { get; set; } public int Age { get; set; } } ...

    ASPNET中JSON的序列化和反序列化的方法

    通过这个类,我们可以创建一个序列化辅助类,如示例中的`JsonHelper`,它包含两个泛型方法:`JsonSerializer`用于序列化,`JsonDeserialize`用于反序列化。 为了使用`DataContractJsonSerializer`类,你需要引入...

    java 对象的序列化与反序列化

    现在,让我们看一个简单的序列化和反序列化的示例代码(基于提供的`StreamDemo_08.java`): ```java import java.io.*; public class StreamDemo { public static void main(String[] args) throws IOException,...

    序列化和反序列化的封装类

    在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...

    C#对象三种形式的序列化和反序列化

    在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始...在给定的示例中,`Serialization0819`这个压缩包文件可能包含了演示这些序列化方法的代码示例,可以帮助深入理解这些概念。

    C#中使用二进制和ProtoBuf分别进行序列化、反序列化、压缩、解压缩对比测试示例源码.zip

    C#中的`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类提供了一种默认的序列化方式,它将对象的状态转换为字节流。这种序列化方式简单易用,但生成的序列化数据通常较大,且不便于跨平台传输。...

    C#对象序列化与反序列化

    ##### (1) 二进制序列化与反序列化的程序示例 ```csharp using System; using System.IO; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary; [Serializable] public ...

    《C#序列化和反序列化之一-二进制序列化》源代码

    以下是一个简单的二进制序列化示例: ```csharp using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; public class MyClass { public int MyInt { get; set; } public ...

    java序列化和反序列化

    #### 三、序列化示例 下面通过一个简单的示例来说明如何实现序列化和反序列化: ```java import java.io.Serializable; class MyClass implements Serializable { private String s; private int i; private ...

    C#序列化与反序列化(包括复杂xml对象)

    在C#中,我们可以使用`System.Xml.Serialization`命名空间下的`XmlSerializer`类来实现XML序列化。这个过程可以将一个复杂的对象结构转换成XML字符串,方便存储或在网络上传输。 方法一:反序列化取节点KV值 这种...

    C#序列化和反序列化案例.rar

    在这个“C#序列化和反序列化案例”中,我们可以通过提供的代码示例深入理解这两个概念。 首先,序列化是将对象的状态转换为可以存储或传输的数据格式的过程。在C#中,我们可以使用内置的System.Runtime....

    C# 序列化反序列化

    在C#中,我们可以使用`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`、`System.Xml.Serialization.XmlSerializer`或`System.Text.Json.JsonSerializer`等类来实现对象的序列化。在这个例子中,...

    C#序列化与压缩操作示例

    在“serDemo”项目中,很可能是实现了一些基本的序列化示例,可能包括XML、二进制或JSON格式的序列化与反序列化操作。这些示例通常会包含创建一个可序列化的类,然后使用相应的序列化器将其转换为字符串或字节流,再...

    对象序列化:使用System.Xml.Serialization命名空间

    在示例代码中,创建了一个`Order`类并进行了序列化。如果没有明确地指定特性,.NET会自动使用默认规则,即类的名称作为XML元素的名称,类的字段或属性作为子元素。在序列化`Order`实例时,`ID`和`OrderDate`字段被...

    C#关于treeview序列化的一个应用程序

    在C#中,我们可以使用.NET Framework提供的System.Runtime.Serialization命名空间中的类来实现序列化。反序列化则是相反的过程,即从数据流恢复对象的状态。 2. **TreeView控件**: TreeView控件是Windows Forms中...

    C#序列化和反序列化

    System.Runtime.Serialization命名空间的BinaryFormatter类负责二进制序列化。这种序列化方式通常用于本地存储,因为它可以节省存储空间并提高读写速度。但是,二进制序列化的文件通常不可读,且不兼容不同的系统...

Global site tag (gtag.js) - Google Analytics