码迷,mamicode.com
首页 > 编程语言 > 详细

JavaSE: ObjectOutputStream 类 和 ObjectInputStream 类

时间:2021-06-10 18:18:23      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:异常   不一致   返回   zab   出现   close   写入文件   组织   bsp   

ObjectOutputStream 类

  <1>  基本概念

        1.  java.io.ObjectOutputStream类:用于将一个对象的所有内容整体写入到输出流中

        2.  只能将支持 java.io.Serializable 接口的对象写入流中

        3.  类通过实现 java.io.Serializable 接口以启用其序列化功能

        4.  所谓序列化,指将一个对象需要储存的相关信息,有效组织成字节序列的转化过程

  <2>  常用的方法

        方法声明                          功能介绍

        ObjectOutputStream(OutputStream out)             根据参数指定的引用来构造对象

        void writeObject(Object obj)                   用于将参数指定的对象整体,写入到输出流中

        void close()                         用于关闭输出流,并释放有关的资源

 

ObjectInputStream 类

  <1>  基本概念

        java.io.ObjectInputStream类:用于从输入流中,一次性将对象整体读取出来。

        所谓反序列化,指将有效组织的字节序列,恢复为一个对象,及相关信息的转化过程

  <2>  常用的方法

        方法声明                          功能介绍

        ObjectInputStream(InputStream in)                根据参数指定的引用来构造对象

        Object readObject()                      从输入流中,读取一个对象,并返回,无法通过返回值来判断是否读取到文件的末尾

        void close()                           用于关闭输入流,并释放有关的资源

  <3>  版本化序列号

        序列化机制,是通过在运行时判断类的 serialVersionUID 来验证版本一致性的。 在进行反序列化时,JVM会把传来的字节流中的 serialVersionUID 与

        本地相应实体类的 serialVersionUID 进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常

        (InvalidCastException)。

  <4>  transient 关键字

        transient 是Java语言的关键字,用来表示一个域不是该对象串行化的一部分。

        当一个对象被串行化的时候,transient 型变量的值不包括在串行化的表示中,然而非 transient 型的变量是被包括进去的。

  <5>  经验

        当希望将多个对象写入文件时,通常将多个对象放入一个集合中,然后将集合这个整体,看作一个对象,写入输出流中,

        此时只需要调用一次 readObject方法,就可以将整个集合的数据读取出来,从而避免了通过返回值,进行是否到达文件末尾的判断。

 

JavaSE: ObjectOutputStream 类 和 ObjectInputStream 类

标签:异常   不一致   返回   zab   出现   close   写入文件   组织   bsp   

原文地址:https://www.cnblogs.com/JasperZhao/p/14869960.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!