Java序列化和反序列化,安排的明明白白

Java序列化和反序列化可以用下面一张图,直观简述一下:
在这里插入图片描述1.序列化的优点以及作用
a. 通过序列化可以实现进程间对象的完整传递
b. 通过序列化后的字节流方便了网络传输
c. 通过序列化后的字节流为二进制序列,能够节省存储空间

由此便知,其作用有:
(1)保证传递对象的完整性
(2)确保对象的网络可传递性
(3)实现数据的持久性
2.反序列化的优点以及作用
能够根据字节流对象的状态及描述信息,完整的重建对象。
3.使用场景
当两个进程进行远程通信时,可以相互发送各种类型的数据, 而这些数据都会以二进制序列的形式在网络上传送。简单说来,【发送方】需要把这个Java对象转换为字节序列,然后在网络上传送;而【接收方】需要从字节序列中恢复出Java对象。我们知道,序列化有个作用就是实现了数据的持久化,通过序列化可以把数据永久地保存到硬盘上的文件里。另外,利用序列化实现远程通信,即在网络上传送对象的字节序列。
4.序列化和反序列化过程中会使用到的API
①java.io.ObjectInputStream:对象输入流。
该类的readObject()方法从输入流中读取字节序列,然后将字节序列反序列化为一个对象并返回。
②java.io.ObjectOutputStream:对象输出流。
该类的writeObject(Object obj)方法将将传入的obj对象进行序列化,把得到的字节序列写入到目标输出流中进行输出。
5.序列化的一般步骤
① 创建一个对象输出流,它可以包装一个其它类型的目标输出流,如文件输出流:
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(“目标路径”));
② 通过对象输出流的writeObject()方法写对象:
out.writeObject(“Hello”);
out.writeObject(new Date());

 注意:只有实现了Serializable或Externalizable接口的类的对象才能被序列化,否则抛出异常。 

6.反序列化的一般步骤
① 创建一个对象输入流,它可以包装一个其它类型输入流,如文件输入流:
ObjectInputStream in = new ObjectInputStream(new fileInputStream(“目标地址路径”));
② 通过对象输出流的readObject()方法读取对象:
String obj1 = (String)in.readObject();
Date obj2 = (Date)in.readObject();

    说明:为了正确读取数据,完成反序列化,必须保证向对象输出流写对象的顺序与从对象输入流中读对象的顺序一致。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值