Java-I/O框架04:对象流、序列化、反序列化及注意事项

视频链接:16.12 序列化_哔哩哔哩_bilibiliicon-default.png?t=O83Ahttps://www.bilibili.com/video/BV1Tz4y1X7H7?spm_id_from=333.788.videopod.episodes&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5&p=12

1.对象流:ObjectInputStream和ObjectOutputStream

  • 增强了缓冲区功能;
  • 增强了读写8中基本数据类型和字符串功能;
  • 增强了读写对象的功能;readObject()从流中读取一个对象;writeObject(Object  obj)向流中写入一个对象;

       使用流传输对象的过程称为序列化、反序列化;

2.序列化代码举例

import java.io.ObjectOutputStream;

/**
 * 使用ObjectOutputStream实现对象的序列化
 * 注意事项:
 * (1)序列化类必须要实现Serializable接口
 * (2)序列化类中对象属性要求实现Serializable接口
 * (3)序列化版本号ID,保证序列化的类和反序列化的类是同一个对象
 * (4)使用transient(瞬间的)修饰属性,这个属性不能被序列化
 * (5)静态属性不能被序列化
 * (6)序列化多个对象,可以借助集合实现
 */
public class ObjectOutputStreamDemo01 {

    public static void main(String[] args) throws Exception {
        //创建对象输出流

        FileOutputStream fos = new FileOutputStream("C:\\Users\\Public\\Documents\\ppp.txt");
        ObjectOutputStream oos = new ObjectOutputStream(fos);

        //创建对象,并进行序列化

        Student s = new Student("张三",20);
        oos.writeObject(s);

        //关闭对象输出流
        oos.close();
        System.out.println("序列化完毕");

    }
}

3.反序列化代码举例

package com.yundait.Demo03;

import java.io.FileInputStream;
import java.io.ObjectInputStream;

public class ObjectInputStreamDemo01 {
    public static void main(String[] args) throws Exception {
        //1创建对象输入流对象
        FileInputStream fis = new FileInputStream("C:\\Users\\Public\\Documents\\ppp.txt");
        ObjectInputStream ois = new ObjectInputStream(fis);

        //读取文件
        Student s = (Student) ois.readObject();

        //关闭
        ois.close();
        System.out.println(s.toString());
    }
}

3.序列化和反序列化注意事项
 *    注意事项:
 * (1)序列化类必须要实现Serializable接口
 * (2)序列化类中对象属性要求实现Serializable接口
 * (3)序列化版本号ID,保证序列化的类和反序列化的类是同一个对象
 * (4)使用transient(瞬间的)修饰属性,这个属性不能被序列化
 * (5)静态属性不能被序列化
 * (6)序列化多个对象,可以借助集合实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值