Java 赢得的数据';t使用ObjectOutputStream追加到二进制文件的末尾

Java 赢得的数据';t使用ObjectOutputStream追加到二进制文件的末尾,java,file,file-io,Java,File,File Io,我试图将ArrayList附加到二进制文件中,以便在程序关闭时保存其数据。下面的片段显示了我是如何编写它们的 public void writeInFile(String filePath, ArrayList<Dealership> dealershipList, boolean append) { File file = new File(filePath); ObjectOutputStream oos = null; FileO

我试图将ArrayList附加到二进制文件中,以便在程序关闭时保存其数据。下面的片段显示了我是如何编写它们的

public void writeInFile(String filePath, ArrayList<Dealership> dealershipList, boolean append) {
        File file = new File(filePath);
        ObjectOutputStream oos = null;
        FileOutputStream fos = null;

        try {
            if (!file.exists() || !append) oos = new ObjectOutputStream (new FileOutputStream (file));
            else oos = new AppendableObjectOutputStream (new FileOutputStream (file, append));
            oos.writeObject(dealershipList);
            oos.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

我第一次写入的所有数据都被正确读取。但是,当需要追加新数据时,只返回第一个信息,我不知道是什么原因造成了这种情况。

如果以这种方式向文件中添加新对象,它将是一个新对象,与文件中已有的其他对象分离。它不会向您以前编写的ArrayList中添加更多项

如果已将两个对象写入文件,则必须调用readObject两次才能同时获取这两个对象。如果这两个列表恰好是列表,您可以通过调用add all将它们合并到单个列表中:

readDealerships = new ArrayList();
readDealerships.addAll((ArrayList<Dealership>) or.readObject());
readDealerships.addAll((ArrayList<Dealership>) or.readObject());
readDealerships=newarraylist();
addAll((ArrayList)或.readObject());
addAll((ArrayList)或.readObject());

如果附加了多个对象,则可能需要一个循环来读取所有对象。

如果以这种方式向文件中添加新对象,则该对象将是一个新对象,与文件中已有的其他对象分离。它不会向您以前编写的ArrayList中添加更多项

如果已将两个对象写入文件,则必须调用readObject两次才能同时获取这两个对象。如果这两个列表恰好是列表,您可以通过调用add all将它们合并到单个列表中:

readDealerships = new ArrayList();
readDealerships.addAll((ArrayList<Dealership>) or.readObject());
readDealerships.addAll((ArrayList<Dealership>) or.readObject());
readDealerships=newarraylist();
addAll((ArrayList)或.readObject());
addAll((ArrayList)或.readObject());
如果附加了多个对象,则可能需要一个循环来读取所有对象