转载自  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接口。

Java IO: 序列化与ObjectInputStream、ObjectOutputStream相关推荐

  1. Java IO框架总揽--ObjectInputStream ObjectOutputStream源码解读

    ObjectInputStream与ObjectOutputStream的作用是:对基本数据和对象进行序列化操作进行支持.其中ObjectInputStream对象提供对基本数据和对象对持久存储,当我 ...

  2. Java IO 序列化与反序列化

    Java IO 序列化与反序列化 Java中的序列化与反序列化 序列化定义 将对象转换为字节流保存起来,并在以后还原这个对象,这种机制叫做对象序列化. 将一个对象保存到永久存储设备上称为持久化. 一个 ...

  3. 【java IO序列化详解】

    唐门崛起 序列化 1.对象序列化和反序列化 2.JDK类库中的序列化API 3.为什么实现了Serializable接口,就可以被序列化 4.serialVersionUID 4.1 serialVe ...

  4. Java IO类库之ObjectInputStream和ObjectOutPutStream

    2019独角兽企业重金招聘Python工程师标准>>> 一.ObjectOutputStream 1 - ObjectOuputStream介绍 ObjectOutputStream ...

  5. 【java基础,IO合集】文件流、高级流(缓冲流、对象流)、 序列化接口java.io.Serrializable

    目录 文件流 1 块读写的文件复制操作 2 文件输出流-覆盖模式 3 文件输出流-追加模式 4 文件输出流-读取文本数据 高级流 1  流连接示意图 2 缓冲流 2.1 使用缓冲流完成文件复制操作 2 ...

  6. java.io.StreamCorruptedException: invalid type code: AC解决办法

    .java.io.StreamCorruptedException: invalid type code: AC解决办法 问题描述: 在向一个文件写入可序列化对象时,每次只想向文件的末尾添加一个可序列 ...

  7. 关于Java IO流学习总结

    一.IO流的三种分类方式 1.按流的方向分为:输入流和输出流 2.按流的数据单位不同分为:字节流和字符流 3.按流的功能不同分为:节点流和处理流     二.IO流的四大抽象类: 字符流:Reader ...

  8. android 输出流对象,Android-IO流之对象操作流ObjectInputStream/ObjectOutputStream

    目录 ObjectInputStream/ObjectOutputStream对象操作流 --12.1 ObjectInputStream 对象操作输入流/反序列化 --12.2 ObjectOutp ...

  9. JAVA IO系列----ObjectInputStream和ObjectOutputStream类

    ·ObjectInputStream和ObjectOutputStream这两个包装类,用于从底层输入流中读取对象类型的数据和对象类型的数据写入到底层输出流.将对象中所有成员变量的取值保存起来就等于保 ...

最新文章

  1. 零基础学怎么学Java_零基础学java难么?怎么自学?
  2. object+java+equals_java-为什么SparseIntArray.equals(Object)不起作用?
  3. 回文数python_回文数 python
  4. 论文理解 R-FCN:基于区域的全卷积网络来检测物体
  5. python dataframe切片_python-如何避免“试图在DataFrame的切片副本上设置值”?
  6. 优化 Golang 分布式行情推送的性能瓶颈
  7. 带字母的计算机在线使用,ASCII,进位制在线转换工具
  8. 基本农田卫星地图查询_如何基于西安80坐标查询定位
  9. atitit.验证码识别step2------剪贴板ClipBoard copy image图像 attilax总结
  10. 自动驾驶的Pipline -- 如何打造自动驾驶的数据闭环?(中)
  11. 中国省市区三级联动带下拉美化带数据库
  12. 文件上传(FileUpload)
  13. 基于马尔可夫随机场的深度估计
  14. java工具类-Java对象转换成Map
  15. PageHelper.startPage分页失效问题,亲测已解决
  16. 基于Python的jieba分词和词云展示
  17. 如何做好预算管理?预算上接战略,下接绩效,如何形成战略-计划-预算-绩效的闭环?
  18. 【友盟】 微博分享缺少C8998文件
  19. ArcGIS简单的三维演示
  20. 【Matlab】如何规范地编写一个MATLAB函数文件

热门文章

  1. Java当中Map的认识和基本用法
  2. 计算机等级delphi取消,计算机二级DELPHI控件:DELPHI过滤记录的实现方法
  3. [MyBatisPlus]代码生成器
  4. [SpringSecurity]web权限方案_用户授权_基于权限访问控制_基于角色访问控制_hasAuthority和hasAnyAuthority_hasRole和hasAnyRole
  5. 高等数学上-赵立军-北京大学出版社-题解-练习2.3
  6. Decorator(装饰)--对象结构型模式
  7. java基础知识——基础语法
  8. maven mysql的jdbctemplate_JDBC、JDBCTemplate、MyBatis、Hiberante 比较与分析
  9. django mysql connector,MySQL Connector / python在Django中不起作用
  10. Java开发Web Service的简介