对象序列化(序列化实现)
一. 序列化与反序列化操作
如果想要实现序列化和反序列化的对象操作,在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();
}
在以后实际的项目开发过程之中,你们根本就不需要实现序列化和反序列化的操作,因为都会有各自的容器帮你自动处理