You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中如何修改代码实现多对象数组的文件读写及对应还原?

解决方案

你的代码里write()方法已经正确把三个数组依次写入文件了,但load()方法只读取了第一个数组。只需要修改load()方法,按照写入的顺序依次读取三个数组并赋值给对应的静态变量即可:

import java.io.*;

public class CarCenter implements Serializable {
    static CarCenter[] arr1 = new CarCenter[6];
    static CarCenter[] arr2 = new CarCenter[6];
    static CarCenter[] arr3 = new CarCenter[6];

    public static void write() {
        try {
            FileOutputStream fos = new FileOutputStream("Data.txt");
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(arr1);
            oos.writeObject(arr2);
            oos.writeObject(arr3);
            oos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static void load() {
        try {
            FileInputStream fis = new FileInputStream("Data.txt");
            ObjectInputStream ois = new ObjectInputStream(fis);
            // 严格按照写入顺序读取三个数组
            arr1 = (CarCenter[]) ois.readObject();
            arr2 = (CarCenter[]) ois.readObject();
            arr3 = (CarCenter[]) ois.readObject();
            ois.close();
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

关键说明:

  • 读取顺序必须和write()方法的写入顺序完全一致,否则会出现类型转换异常或数据匹配错误。
  • 补充了ois.close()调用,确保输入流资源被正确释放,避免潜在的资源泄漏问题。

内容的提问来源于stack exchange,提问作者PetemcVoy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 13:15:29