Java序列化与反序列化._第1页
Java序列化与反序列化._第2页
Java序列化与反序列化._第3页
Java序列化与反序列化._第4页
Java序列化与反序列化._第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java序列化与反序列化 Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序 列恢复为Java对象的过程。 当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音 频、视频等,而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java 进程进行通信时,实现进程间的对象传送,就需要Java序列化与反序列化了。换句 话说,一方面,发送方需要把这个Java对象转换为字节序列,然后在网络上传送; 另一方面,接收方需要从字节序列中恢复出Java对象。 什么情况下需要序列化 1. 当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; 2.

2、当你想用套接字在网络上传送对象的时候; 3. 当你想通过RMI传输对象的时候; 序列化作用 实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上(通常存放在文 件里);利用序列化实现远程通信,即在网络上传送对象的字节序列。 JDK类库中序列化API java.io.ObjectOutputStreamjava.io.ObjectOutputStream:表示对象输出流:表示对象输出流 它的writeObject(Object obj)方法可以对参数指定的obj对象进行序列化,把得到 的字节序列写到一个目标输出流中。 java.io.ObjectInputStreamjava.io.Obj

3、ectInputStream:表示对象输入流:表示对象输入流 它的readObject()方法源输入流中读取字节序列,再把它们反序列化成为一个对象, 并将其返回。 实现Java对象序列化与反序列化的方法 假定一个Student类,它的对象需要序列化,可以有如下三种方法: 方法一:若Student类仅仅实现了SerializableSerializable接口接口,则可以按照以下方式进行序 列化和反序列化。ObjectOutputStream采用默认的序列化方式,对Student对象的非 transient的实例变量进行序列化。ObjcetInputStream采用默认的反序列化方式,对 Stu

4、dent对象的非transient的实例变量进行反序列化。 方法二:若Student类仅仅实现了Serializable接口,并且还定义了 readObject(ObjectInputStream in)和writeObject(ObjectOutputSteam out),则采用 以下方式进行序列化与反序列化。ObjectOutputStream调用Student对象的 writeObject(ObjectOutputStream out)的方法进行序列化。ObjectInputStream会调用 Student对象的readObject(ObjectInputStream in)的方法进行

5、反序列化。 方法三:若Student类实现了ExternalnalizableExternalnalizable接口接口,且Student类必须实现 readExternal(ObjectInput in)和writeExternal(ObjectOutput out)方法,则按照以 下方式进行序列化与反序列化。ObjectOutputStream调用Student对象的 writeExternal(ObjectOutput out)的方法进行序列化。ObjectInputStream会调用 Student对象的readExternal(ObjectInput in)的方法进行反序列化。 JD

6、K类库中序列化的步骤 步骤一:创建一个对象输出流。 它可以包装一个其它类型的目标输出流,如文件输出流:ObjectOutputStream out = new ObjectOutputStream(new fileOutputStream(“D:objectfile.obj”); 步骤二:通过对象输出流的writeObject()方法写对象: out.writeObject(“Hello”); out.writeObject(new Date(); JDK类库中反序列化的步骤 步骤一:创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流: ObjectInputStream in = new ObjectInputStream(new fileInputStream(“D:objectfile.obj”); 步骤二:通过对象输出流的readObject()方法读取对象: String obj1 = (String)in.readObject(); Date obj2 = (Date)in.readObject(); 总结 1)Java

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论