【问题标题】:How to append objects on a file on Java?如何在 Java 上的文件上附加对象?
【发布时间】:2015-10-15 16:20:56
【问题描述】:

我正在尝试在 Java 上做一个应用程序,我需要将 ArrayLists 保存在一个文件中。我一直在寻找如何做到这一点,我找到了下一个代码:

ArrayList<Expediente> al = new ArrayList<Expediente>();
Expediente exp = new Expediente("Expediente data");

try{
    File file = new File("Pathname");
    FileOutputStream ofs = new FileOutputStream(file);
    ObjectOutputStream oos = new ObjectOutputStream(ofs);
    oos.writeObject(al);
    oos.close();
    ofs.close();
} catch (IOException e) {
    System.err.println("Error!");
    e.printStackTrace();
}

我现在的问题是,如果我想保存相同的 ArrayList 但包含另一个数据,或者如果我重新打开文件,文件中的第一个数据将被覆盖。

有人能告诉我如何在文件中附加这些新数据吗?

谢谢。

【问题讨论】:

  • 您看过 Java API 文档吗?
  • 我认为这是重复的。那里有很好的答案。 stackoverflow.com/questions/1625234/…
  • 是的,我知道 FileWriter 和 PrintWriter,但我需要编写对象,而不是字符串。不过还是谢谢你:)

标签: java file object arraylist append


【解决方案1】:

在 FileOutputStream ctor 中将 append 标志设置为 true。

FileOutputStream ofs = new FileOutputStream(file, true);

http://docs.oracle.com/javase/7/docs/api/java/io/FileOutputStream.html

【讨论】:

  • 非常感谢 :) 我没想到这个选项 :s 哈哈哈
  • 不客气。我不怪你——我已经做了 20 年的 Java 程序员,是 Sun 的 Java 架构师,写了很多认证考试题,并且都复习了——我只是习惯性地去阅读 API 文档任何时候我都在做 Java。要记住的细节太多了。
【解决方案2】:

代替

FileOutputStream ofs = new FileOutputStream(file);

你可以使用

FileOutputStream ofs = new FileOutputStream(file, true);

请参阅 Java API here

【讨论】:

  • 非常感谢 :) 我没想到这个选项 :s 哈哈哈
猜你喜欢
  • 2020-07-08
  • 1970-01-01
  • 2021-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-03
  • 2018-04-03
相关资源
最近更新 更多