/*
下面的程序说明了怎样实现对象序列化和反序列化。它由实例化一个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、二进制等;反序列化则是相反的过程,即从这种存储或传输的...
在“反射”文件中,可能包含如何使用反射创建和操作对象的代码示例,而“序列化”文件则可能包含各种序列化技术的演示,例如XML、JSON的序列化和反序列化实例。 了解和掌握反射与序列化,开发者可以构建更加灵活、...
本示例代码着重展示了如何将实体类序列化为Json和binary格式,这两种常见的序列化方式在IT行业中广泛应用。 1. **Json序列化**: JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和...
XML序列化与反序列化是.NET框架中处理数据交换的重要技术,它允许我们将对象的状态转换为XML格式的数据,也可以将XML数据恢复为等效的对象。这个实战项目专注于使用C#实现这一过程,使得开发者能够方便地在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; } } ...
通过这个类,我们可以创建一个序列化辅助类,如示例中的`JsonHelper`,它包含两个泛型方法:`JsonSerializer`用于序列化,`JsonDeserialize`用于反序列化。 为了使用`DataContractJsonSerializer`类,你需要引入...
现在,让我们看一个简单的序列化和反序列化的示例代码(基于提供的`StreamDemo_08.java`): ```java import java.io.*; public class StreamDemo { public static void main(String[] args) throws IOException,...
在编程领域,序列化和反序列化是两个关键的概念,特别是在数据存储、网络传输和对象持久化等场景中。它们允许我们将对象的状态转换为字节流(序列化),然后在需要的时候将字节流还原为原来的对象(反序列化)。在C#...
在C#编程中,序列化和反序列化是将对象的状态转换为可存储或传输的形式,然后恢复为原始...在给定的示例中,`Serialization0819`这个压缩包文件可能包含了演示这些序列化方法的代码示例,可以帮助深入理解这些概念。
C#中的`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`类提供了一种默认的序列化方式,它将对象的状态转换为字节流。这种序列化方式简单易用,但生成的序列化数据通常较大,且不便于跨平台传输。...
##### (1) 二进制序列化与反序列化的程序示例 ```csharp using System; using System.IO; using System.Collections.Generic; using System.Runtime.Serialization.Formatters.Binary; [Serializable] public ...
以下是一个简单的二进制序列化示例: ```csharp using System; using System.IO; using System.Runtime.Serialization.Formatters.Binary; public class MyClass { public int MyInt { get; set; } public ...
#### 三、序列化示例 下面通过一个简单的示例来说明如何实现序列化和反序列化: ```java import java.io.Serializable; class MyClass implements Serializable { private String s; private int i; private ...
在C#中,我们可以使用`System.Xml.Serialization`命名空间下的`XmlSerializer`类来实现XML序列化。这个过程可以将一个复杂的对象结构转换成XML字符串,方便存储或在网络上传输。 方法一:反序列化取节点KV值 这种...
在这个“C#序列化和反序列化案例”中,我们可以通过提供的代码示例深入理解这两个概念。 首先,序列化是将对象的状态转换为可以存储或传输的数据格式的过程。在C#中,我们可以使用内置的System.Runtime....
在C#中,我们可以使用`System.Runtime.Serialization.Formatters.Binary.BinaryFormatter`、`System.Xml.Serialization.XmlSerializer`或`System.Text.Json.JsonSerializer`等类来实现对象的序列化。在这个例子中,...
在“serDemo”项目中,很可能是实现了一些基本的序列化示例,可能包括XML、二进制或JSON格式的序列化与反序列化操作。这些示例通常会包含创建一个可序列化的类,然后使用相应的序列化器将其转换为字符串或字节流,再...
在示例代码中,创建了一个`Order`类并进行了序列化。如果没有明确地指定特性,.NET会自动使用默认规则,即类的名称作为XML元素的名称,类的字段或属性作为子元素。在序列化`Order`实例时,`ID`和`OrderDate`字段被...
在C#中,我们可以使用.NET Framework提供的System.Runtime.Serialization命名空间中的类来实现序列化。反序列化则是相反的过程,即从数据流恢复对象的状态。 2. **TreeView控件**: TreeView控件是Windows Forms中...
System.Runtime.Serialization命名空间的BinaryFormatter类负责二进制序列化。这种序列化方式通常用于本地存储,因为它可以节省存储空间并提高读写速度。但是,二进制序列化的文件通常不可读,且不兼容不同的系统...