一尘不染

如何将Java序列化的对象写入和读取到文件中

java

我将多个对象写入文件,然后在代码的另一部分中检索它们。我的代码没有错误,但是无法正常工作。您能帮我发现我的代码有什么问题吗?我从不同的网站阅读了不同的代码,但是没有一个对我有用!

这是将对象写入文件的代码:MyClassList是一个数组列表,其中包含我的类的对象(必须将其写入文件)。

for (int cnt = 0; cnt < MyClassList.size(); cnt++) {
    FileOutputStream fout = new FileOutputStream("G:\\address.ser", true);
    ObjectOutputStream oos = new ObjectOutputStream(fout);
    oos.writeObject(MyClassList.get(cnt));
}

我向输出流的构造函数添加了“ true”,因为我想将每个对象都添加到文件的末尾。那是对的吗?

这是我从文件中读取对象的代码:

 try {
     streamIn = new FileInputStream("G:\\address.ser");
     ObjectInputStream objectinputstream = new ObjectInputStream(streamIn);
     MyClass readCase = (MyClass) objectinputstream.readObject();
     recordList.add(readCase);
     System.out.println(recordList.get(i));
 } catch (Exception e) {
     e.printStackTrace();
 }

最后,它仅打印出一个对象。现在,我不知道我书写或阅读不正确!


阅读 515

收藏
2020-09-08

共1个答案

一尘不染

为什么不立即序列化整个列表?

FileOutputStream fout = new FileOutputStream("G:\\address.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(MyClassList);

当然,假设MyClassList是一个ArrayListor LinkedList或另一个Serializable集合。

在将其读回的情况下,在代码中您仅准备了一项,就没有循环来收集所有已写入的项。

2020-09-08