是否可以从不同的方法写入同一个文件?

时间:2011-07-05 18:47:21

标签: java java-io

我有以下方法:

public static void writeContestantsToFile(ArrayList<Contestant> contestants) throws IOException {
    FileOutputStream fos = new FileOutputStream("minos.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fos);

    oos.writeObject(contestants);
    oos.flush();
    oos.close();
}

但是我想知道我是否可以用另一个arraylist再次写入文件minos.dat?例如,有另一种方法:

public static void writeContestantsToFile(ArrayList<Times> times) throws IOException {
    FileOutputStream fos = new FileOutputStream("minos.dat");
    ObjectOutputStream oos = new ObjectOutputStream(fos);

    oos.writeObject(times);
    oos.flush();
    oos.close();
}

我是否能够同时检索arraylist和参赛者?或者我是否需要写入单独的文件?

3 个答案:

答案 0 :(得分:2)

你可以,但是如果你不想覆盖文件的内容,但只是追加,那就打开它:

FileOutputStream fos = new FileOutputStream("minos.dat", true);

(使用this constructor

答案 1 :(得分:1)

如果您在一个线程中按顺序表示,则使用@MByD解决方案。它叫做追加。如果这是多线程的,那么您将需要阻止和同步。

答案 2 :(得分:0)

不是对象流的情况。如果没有特殊措施,则无法使用对象输出流附加到文件。你必须:

  • 保持文件打开
  • 同步对其的访问
  • 在流程的生命周期中使用相同的ObjectOutputStream
  • 并确保退出时关闭。