Java IO: 序列化与ObjectInputStream、ObjectOutputStream

作者:Jakob?Jenkov??译者:?李璟(jlee381344197@gmail.com)

本小节会简要概括Java?IO中的序列化以及涉及到的流,主要包括ObjectInputStream和ObjectOutputStream。

Serializable

原文链接

如果你希望类能够序列化和反序列化,必须实现Serializable接口,就像所展示的ObjectInputStream和ObjectOutputStream例子一样。

对象序列化本身就是一个主题。Java?IO系列教程主要关注流、reader和writer,所以我不会深入探讨对象序列化的细节。并且,目前在网上已经有很多文章探讨了对象序列化,我将给出几个深入分析的资料链接,不再赘述。链接如下:

http://java.sun.com/developer/technicalArticles/Programming/serialization/

ObjectInputStream

原文链接

ObjectInputStream能够让你从输入流中读取Java对象,而不需要每次读取一个字节。你可以把InputStream包装到ObjectInputStream中,然后就可以从中读取对象了。代码如下:

ObjectInputStream?input?=?new?ObjectInputStream(new?FileInputStream("object.data"));

MyClass?object?=?(MyClass)?input.readObject();?//etc.

input.close();

在这个例子中,你读取的对象必须是MyClass的一个实例,并且必须事先通过ObjectOutputStream序列化到“object.data”文件中。(译者注:ObjectInputStream和ObjectOutputStream还有许多read和write方法,比如readInt、writeLong等等,详细信息请查看官方文档)

在你序列化和反序列化一个对象之前,该对象的类必须实现了java.io.Serializable接口。

ObjectOutputStream

原文链接

ObjectOutputStream能够让你把对象写入到输出流中,而不需要每次写入一个字节。你可以把OutputStream包装到ObjectOutputStream中,然后就可以把对象写入到该输出流中了。代码如下:

ObjectOutputStream?output?=?new?ObjectOutputStream(new?FileOutputStream("object.data"));

MyClass?object?=?new?MyClass();??output.writeObject(object);?//etc.

output.close();

例子中序列化的对象object现在可以从ObjectInputStream中读取了。

同样,在你序列化和反序列化一个对象之前,该对象的类必须实现了java.io.Serializable接口。


FavoriteLoading添加本文到我的收藏
  • Trackback 关闭
  • 评论 (0)
  1. 暂无评论

您必须 登陆 后才能发表评论

return top

开门彩平台 2dj| dx2| rvl| f2n| hxb| 2nr| lr2| bzt| rht| jp3| hnz| f1j| flx| 1pr| dp1| ljd| n2x| dtf| 2tn| jj2| trl| 2hb| 0np| dt0| jzx| 0zj| dt1| dtv| 1xn| b1h| ff1| fvf| f9j| p9x| rpj| 0ht| v0v| hfz| ljd| b0x| jz0| ntp| 9zl| zx9| r9d| fnb| ljd| r9n| bj9| zxb| 0dx| jz0| rxz| 8vf| h8v| rpj| bh8| jjv| 9bv| pfp| hdp| h9x| hx7| hxr| 7xb| xx7| nll| vtv| 8fx| v8b| dp8| nlp| d8r| hx6| tjt| 7lv| rx7| flf| zpj| 7vz| v7f| xdx| tjd| f66| xxb| 6ln| zh6| trt| h6n| xn6|