JAVA基础:对象流

目录

前言

序列化和反序列化

对象流的创建


前言

之前的流我们都是使用他们读取一些字节或者字符的数据,但是在实际的应用中数据的类型除了基本数据类型之外,还有引用数据类型,对象流就是能读取引用数据类型的流

序列化和反序列化

对象流的本质是一个字节流,也是过程流

对象流的读取涉及两个概念:序列化和反序列化

假设我们没有对象流其实也可以把对象数据存到文件中,我们可以先获得所有对象属性的值,然后按照规则把这些数据拼成字符串,例如每个数据利用逗号隔开,写入文件。读数据时可以按照逗号拆分再重写拼成对象

我们将把对象拆开写入文件的过程称为序列化

将把对象读入内存重新组成对象的过程称为反序列化

以上的过程很麻烦,这也是广义上的序列化

在java中狭义的序列化就是使用对象流读取对象数据,这个过程更加简单方便

对象流的创建

FileOutputStream fos = new FileOutputStream("c:/z/2.txt") ;
ObjectOutputStream oos = new ObjectOutputStream(fos) ;
oos.writeObject(car); 
oos.flush();


FileInputStream fis = new FileInputStream("c:/z/2.txt") ;
ObjectInputStream ois = new ObjectInputStream(fis) ;
Car c = (Car) ois.readObject();
System.out.println(c);

手动实现序列化的过程非常麻烦,但是使用对象流只要上面的几个步骤就好了

因为对象流是个过程流和字节流,所以需要配和文件字节流这个节点流

但是只有上面的代码是无法序列化的,还需要一个重要的步骤,我们需要告诉jvm这个类的对象是可以序列化的

public class Car implements Serializable {
    private int cno ;
    private String cname ;
    private String color ;
    private int price ;
}

要让需要序列化的对象实现Serializable 接口

这个接口什么代码都没有,作用就是起到一个标识作用,告诉jvm这个对象可以序列化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值