博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java IO: 序列化与ObjectInputStream、ObjectOutputStream
阅读量:6614 次
发布时间:2019-06-24

本文共 1312 字,大约阅读时间需要 4 分钟。

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

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

Serializable

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

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

ObjectInputStream

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

1 ObjectInputStream input = new ObjectInputStream(new FileInputStream("object.data"));
2  
3 MyClass object = (MyClass) input.readObject(); //etc.
4  
5 input.close();

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

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

ObjectOutputStream

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

1 ObjectOutputStream output = new ObjectOutputStream(new FileOutputStream("object.data"));
2  
3 MyClass object = new MyClass();  output.writeObject(object); //etc.
4  
5 output.close();

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

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

原创文章,转载请注明: 转载自本文链接地址: 

转载于:https://www.cnblogs.com/dassmeta/p/5323936.html

你可能感兴趣的文章
发现并防止托管代码中出现内存泄漏
查看>>
Redis+TwemProxy(nutcracker)集群方案部署记录
查看>>
相等与全等
查看>>
VS无法设置断点的解决方案
查看>>
Android -- 再来一发Notification
查看>>
从尾到头打印链表
查看>>
android 开发之电子钢琴 源码
查看>>
Java的jar文件安装成windows 服务
查看>>
MapGuide中怎么实现“指哪儿打哪儿”?ToolTip帮你忙~
查看>>
GridView添加统计(合计)行
查看>>
第3部分。XAML标记扩展
查看>>
Linux 定时运行脚本、命令
查看>>
如何让你的程序运行的更快(1)之续---揭秘StringBuffer的capacity
查看>>
php mysqli mysqli_query() mysqli_real_query()
查看>>
开源欣赏wordpress之用户新增user-new.php
查看>>
管理Mysql常用指令
查看>>
jQuery 2.0.3 源码分析 数据缓存
查看>>
nginx访问报错:Too many open files accept:
查看>>
NSPredicate,谓词
查看>>
MVC自定义路由的配置,必须把自己的路由写在前面
查看>>