Java基础——IO流(3)——转换流、序列化流、随机存取文件流

本文详细介绍了Java中的对象序列化,包括序列化和反序列化的概念、ObjectOutputStream和ObjectInputStream的使用,以及静态和transient变量在序列化中的处理。此外,还探讨了InvalidClassException异常及其解决办法,强调了实现序列化时的注意事项。最后,简要阐述了随机存取文件流RandomAccessFile,展示了其在文件读写上的灵活性。
摘要由CSDN通过智能技术生成

1.转换流

待补充

 

2.序列化流

2.1 概述

(1)什么是序列化和反序列化?

  • 序列化:把对象转化为字节序列的过程
    • Java 提供了一种对象序列化的机制。用一个字节序列可以表示一个对象,该字节序列包含该对象的数据 对象的类型对象中存储的属性等信息。字节序列写出到文件之后,相当于文件中持久保存了一个对象的信息。
  • 反序列化:把字节序列恢复为对象的过程
    • 反之,该字节序列还可以从文件中读取回来,重构对象,对它进行反序列化对象的数据 、对象的类型对象中存储的数据信息,都可以用来在内存中创建对象。

图解:

图1:

图2:

  • 对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘中,或通过网络将这种二进制流传输到另一个网络节点,当其它程序获取了这种二进制流,就可以恢复成原来的Java对象
  • Java中使用ObjectOutputStream进行序列化,使用ObjectInputStream进行反序列化,
  • 序列化的好处在于可将任何实现了Serializable接口的对象转化为字节数据,使其在保存和传输时可被还原

(2)为什么要序列化?

  • 1.持久存储对象数据的时候时需要序列化。通常当我们要把对象的数据保存在文件或者数据库中时,需要序列化
  • 2.在网络传输传输对象的时候需要序列化
  • 3.序列化是RMI(Remote Method Invoke,即远程方法调用)过程的参数和返回值都必须实现的机制,而RMI是JavaEE的基础。因此序列化机制是JavaEE平台的基础

2.2 ObjectOutputStream类(序列化流)

java.io.ObjectOutputStream 类作用:把对象以流的方式写入到文件中实现保存

构造方法:

  • 参数OutputStream out:字节输出流

特有的成员方法:

使用步骤:

  • 1.创建一个ObjectOutputStream对象,构造方法中传递字节输出流
  • 2.使用ObjectOutputStream对象中的方法writeObject,把对象写入到文件中
  • 3.释放资源

示例代码:

package Serializable;

import java.io.Serializable;

public class Person implements Serializable {

    private String name;
    private int age;

    public Person(){

    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
package Serializable;

i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值