序列化流/对象操作输出流:可以把JAVA中的对象写到本地文件中

使用对象输出流将对象保存到文件的时候,会出现NotSerializableException异常

解决方案:让JAVAbean类实现Serializable接口

1、Serializable接口里面没有抽象方法,是一个标记接口
2、一旦实现了这个接口,就表示当前的这个Student类可以被序列化

反序列号流:

序列化流和反序列化流,

细节一:如果使用反序列化流在解析数据的时候,JAVAbean类是不能修改的,一旦修改就会导致两边的标识不一样。

解决方法如下:

方案一:

在javabean类中写死

方案二:设置IDEA

设置IDEA之后,如果不记得写,IDEA会有一个深色背景在类名的背后,你可以自己写一个

也可以alt+回车,IDEA会提示你写

细节二:

如果javabean中有一些属性,你不想序列化,比如student类中,有name,age,address,你不想序列化address,这个时候可以添加关键字

transient:瞬态关键字

需求:将多个自定义对象序列化到文件中,但是对象的个数不确定,该如何操作的?

package Day11_IO;

import java.io.*;
import java.util.ArrayList;
public class IOTest02 {
    public static void main(String[] args) throws IOException, ClassNotFoundException {
        //利用集合存储对象,可以实现批量序列化和反序列化
        Animals a1 = new Animals("哈士奇",10);
        Animals a2 = new Animals("波斯猫",11);
        Animals a3 = new Animals("米老鼠",12);
        Animals[] arr =new Animals[3];
        ArrayList<Animals> list = new ArrayList<Animals>();
        list.add(a1);
        list.add(a2);
        list.add(a3);
        //序列号写入
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("E:\\file\\test1.txt"));
        oos.writeObject(list);
        oos.close();
        //序列号读取
        ObjectInputStream ois = new ObjectInputStream(new FileInputStream("E:\\file\\test1.txt"));
        ArrayList<Animals> list1=(ArrayList<Animals>) ois.readObject();
        for (Animals animals : list1) {
            System.out.println(animals);
        }
        ois.close();
    }
}
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐