Java之IO流(二)

序列化

(1)概念:所谓对象序列化就是将对象的状态转化成字节流,保存在文件中,以后可以通过读取文件再生成相同状态的对象

(2)序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件或在网络上传输。反序列化就是打开字节流并重构对象。

(3)对象的序列化和反序列化:使用对象输出流输出序列化对象的步骤,有时也成为序列化;而使用对象输入流输入对象的过程,有时也称为反序列化。

(4)序列化的必要性:Java中一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端。这就需要有一种可以在两端传输数据的协议。Java序列化机制就是为了解决这个问题而产生的。

(5)Java对象序列化:只需要实现 java.io.Serializable 接口的类对象就可以转换成字节流或从字节流恢复。ObjectOutputStream 负责将对象写入字节流 ,ObjectInputStream 从字节流重构对象。

(6)serialVersionUID的作用:Java的序列化机制是通过判断类的 serialVersionUID 来验证版本的一致性。在进行反序列化时,JVM会把传来的字节流中的 serialVersionUID 与本地相应实体(类)的 serialVersionUID 进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。(InvalidCastException)。

/*
 *写入对象部分代码块
 */
 User user = new User("张三",18,3000.0);
 ......
 //通过序列化写入对象
 out.writeObject(user);
 //通过反序列化读出对象(必须要进行强制类型转换,转成所需的原类型)
 User temp = (User)in.readObject();

(7)Transient关键字的使用: transient说明一个属性是临时的,不会被序列化。

序列流

一个 SequenceInputStream代表其他输入流的逻辑连接。它从输入流的有序集合,从第一个直到文件结束达到读取,然后读取第二,等等,直到文件结束在包含输入流上达到。
主要方法: SequenceInputStream(InputStream s1, InputStream s2)
初始化新创建的 SequenceInputStream记住两个参数,将其写入的命令,第一 s1然后 s2,提供字节是从这 SequenceInputStream读。

具体实现操作进入我的博客查看音乐串烧的项目代码,里面有很详细的说明!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值