java 对象序列化与反序列化

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 对象序列化与反序列化相关的知识,希望对你有一定的参考价值。

这篇文章 主要就 Java 对象的序列化与反序列化进行讨论,好了,直接入题:

一. 序列化与反序列化的含义:

    Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程

二. 序列化与反序列化的目的:

    将Java 对象变成二进制字节,以便在两个进程中通信或传输,提高通信效率,实现数据的持久化

三.JDK 中序列化相关的类:

   1. java.io.ObjectOutputStream:表示对象输出流
    它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。

   2.java.io.ObjectInputStream:表示对象输入流
   它的readObject()方法源输入流中读取字节序列,再把它们反序列化成为一个对象,并将其返回。

  只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则抛出异常

四.在JDK类库中序列化的步骤:

 1.创建一个对象输出流,它可以包装一个其它类型的目标输出流,如文件输出流:

 ObjectOutputStream out = new ObjectOutputStream(new fileOutputStream(“D:\\\\objectfile.obj”));

  2.通过对象输出流的writeObject()方法写对象:

  out.writeObject(“Hello”);

  out.writeObject(new Date());

五.JDK类库中反序列化的步骤

1.创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流:

ObjectInputStream in = new ObjectInputStream(new fileInputStream(“D:\\\\objectfile.obj”));

2.通过对象输出流的readObject()方法读取对象:

  String obj1 = (String)in.readObject();

  Date obj2 = (Date)in.readObject();

  注意:为了正确读取数据,完成反序列化,必须保证向对象输出流写对象的顺序与从对象输入流中读对象的顺序一致。

 

参考文章:

  http://www.cnblogs.com/xdp-gacl/p/3777987.html

http://www.cnblogs.com/xudong-bupt/archive/2013/05/19/3086493.html

http://www.2cto.com/kf/201405/305380.html

以上是关于java 对象序列化与反序列化的主要内容,如果未能解决你的问题,请参考以下文章

java对象序列化与反序列化

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

[Java安全]Java序列化与反序列化

[Java安全]Java序列化与反序列化

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化

Java学习笔记6.3.3 文件操作 - 对象序列化与反序列化