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

发布于 2024-11-18 17:31:17 字数 737 浏览 4 评论 0原文

我有以下方法:

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();
}

但我想知道是否可以用另一个数组列表再次写入文件 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();
}

我能够检索时间数组列表和参赛者吗?或者我需要写入单独的文件吗?

I have the following method:

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();
}

But I am wondering whether or not I can write to the file minos.dat again with another arraylist? For example have another method like this:

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();
}

Will I be able to retrieve both the times arraylist and contestants? Or do I need to write to separate files?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

只想待在家 2024-11-25 17:31:17

可以,但如果您不想覆盖文件的内容,而只想追加,请像这样打开它:(

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

使用 此构造函数)

You can, but if you don't want to override the content of the file, but only append, open it like that:

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

(using this constructor)

葬心 2024-11-25 17:31:17

如果您的意思是在一个线程中顺序进行,那么您使用@MByD 解决方案。它称为追加。如果这是多线程的,那么您将需要阻塞和同步。

If you mean sequentially in one thread then you use @MByD solution. Its called appending. If this is multithreaded then you will need to block and synchronize.

呆橘 2024-11-25 17:31:17

不适用于对象流。如果没有特殊措施,您无法使用对象输出流附加到文件。您必须:

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

Not in the case of object streams. Without special measures you cannot append to a file using object output streams. You must:

  • leave the file open
  • synchronize access to it
  • use the same ObjectOutputStream for the life of the process
  • and ensure it is closed when you exit.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文