117java

54 阅读1分钟

对象序列化(序列化实现)


一.   序列化与反序列化操作

如果想要实现序列化和反序列化的对象操作,在java.io提供有两个处理类:ObjectOutputStream,ObjectInputStream,来观察这两个类的定义结构以及各自的构造方法

 

二.对象序列化ObjectOutputStream

在整个程序里,PrintStream,ObjectOutputSream都要接收OutputStream,那么问题是,如果真进行我们对象序列化,那我们能发现这个ObjectOutputStream中,我们往往会使用这样一个方法public final void writeObject(Object obj)throws IOException,他这个地方我们绝对不可能调用的是stream类中给我们提供的方法,能调用的方法一定是自己定义的新方法。

 

该类设计中,我们依然要通过ObjectOutputStream去取得,问题是在整个代码实现中我们既然ObjectOutputStream需要接受的OutputStream,就必须指定对象的输出位置,如果现在又向文件中保存,这里面接收的是谁?

 

如果整个文件需要执行保存操作,那么就还需要一个File类,如下流程图:

 

 

三.对象反序列化ObjectInputStream

与上ObjectOutputStream同理

 

流程图如下:

 

 

四.代码讲解

范例:实现对象序列化

我们在程序中找到一个方法跟上如下代码

public static final File FILE=new File(“D:” + File.separator + “person.ser”);

public static void main(String[] args)throws Exception{

ser(new Person(“张三”,20));

}

Public static void ser(Object obj)throws Exceotion{

ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(FILE));

Oos.wrireObject(obj);

Oos.close();

}

范例:实现对象反序列化

 

public static void dser() throws Exception{

ObjectInputSteam ois=new ObjectInputStream(new FileInputStream(FILE));

System.out.println(ois.readObject());

ois.close();

}

 

在以后实际的项目开发过程之中,你们根本就不需要实现序列化和反序列化的操作,因为都会有各自的容器帮你自动处理