java高级编程---序列化机制

应用场景

在分布式环境下,当进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传输。发送方需要把这个java对象转换为字节序列,才能在网络上传送。

  1. 永久性保存对象,保存对象的字节序列到本地文件或者数据库中;
  2. 通过序列化以字节流的形式使对象在网络中进行传递和接受
  3. 通过序列化在进程间传递对象

字节流概念

在JDK中,提供两个抽象类InoutStream和OutputStream,他们是字节流的顶级父类,所有的字节输入流都继承自InoutStream,所有的字节输出都继承OutoutStream,因此在使用时一般不会调用这两个抽象类。请添加图片描述

 在IO操作结束后,应该调用close()方法关闭流。从而释放当前IO流所占的系统资源。

请添加图片描述

InputStream和OutputStream这两个类虽然提供了一系列和读写数据有关的方法,但这两个类是抽象类,不能被实例化。
请添加图片描述
请添加图片描述

java序列化

序列化的概念
序列化:把java对象转换为字节序列化的过程
java序列化的几种方式:

  • 采用Java对象的序列化和反序列化机制;
  • 把对象包装成JSON字符串传输
  • 采用Google的开源工具

对象输出流
通过ObjectOutputStream类对象的writeObject(Object obj)方法,将指定的obj对象写到一个目标字节输出流中
对象输入流
通过ObjectInputStream类对象的readObject()方法从一个源数据流中读取字节序列,实现反序列化为一个java对象
注意:只有实现Serializable或Externalizable接口的类的对象才能被序列化。

Java对象实现序列化的步骤

(1)定义一个实体类,并实现Serializable接口

public class Studebt implements Serializable{
}

(2)创建该类的对象

Student student=new Student();

(3) 创建逻辑文件

File file=new File("物理文件");

(4)创建文件输出流

FileOutputStream fos=new FileOutputStream(file);

(5)创建对象输出流,负责将对象写入字节流

ObjectOutputStream oos=new ObjectOutputStream(fos);

(6)通过对象输出流写入对象

oos.wruteObject(student);

(7)关闭流

oos.close();
fos.close();

java实现反序列化的步骤

(1)定义一个实体类,并实现Serializable接口

public class Student implements Serializable{}

(2) 创建该类对象(使用无参构造函数创造一个实体类对象)

Student student=nwq Student();

(3)创建逻辑文件

File file=new File("物理文件");//构造函数

(4)创建文件输入流

FileInputStream fis=new FileInputStream(file);

(5) 创建对象输入流,负责将对象读入字节流

ObjectInputStream ois=new ObjectInputStream(fis);

(6)通过对象输入流读出对象并处理该对象

Student student=(Student)ois.readObject();
  System.outy.println(student);

(7)关闭流

ois.close();
fis.close();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序猿在线码字

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值