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
相关产品推荐
相关产品推荐

