FileWriter,如何在同一文件上写



我创建了一个Java游戏,当游戏结束时,执行一个方法,告诉用户输入他/她的名字,然后他们的分数将保存在playscores.txt文档中。这工作得很好。然而,我想要的不仅仅是一个人的分数在这个文件。我希望所有玩游戏的人的名字和分数都会保存在这个文档中。如果你能帮忙的话,我会很感激的。

这是我的gameComplete方法代码:
public void gameComplete() throws IOException {
    String name = (String) JOptionPane.showInputDialog(
            frame,
            "Enter your name: ",
            "Save Score",
            JOptionPane.PLAIN_MESSAGE);
    Score score = new Score(player.getScore(), name);
    FileWriter fstream = new FileWriter("playerscores.txt");
    BufferedWriter out = new BufferedWriter(fstream);
    out.write("Name : " + score.getName() + System.getProperty( "line.separator" )  );
    out.write("Score : " + score.getScore());
    out.close();
}

我尝试过不同的东西,如Objectoutputstream,但不幸的是不能弄清楚如何做到这一点,并想知道它是否可能。此外,我想知道我应该使用什么类来完成这项工作。

如果您乐意将新分数附加到文件末尾,请替换:

FileWriter fstream = new FileWriter("playerscores.txt");

:

FileWriter fstream = new FileWriter("playerscores.txt", true);

如果你可以有多个用户同时播放,你也需要使用文件锁定,以避免访问文件时的竞争条件

为了对多人执行此操作,您应该以追加模式打开文件。

FileWriter fstream = new FileWriter("playerscores.txt",true);

语法: public FileWriter(File file, boolean append)

参数:

  • file -要写入

  • 的file对象
  • append -如果为true,则字节将被写入文件的末尾

默认情况下,append参数为false所以,之前,你用当前玩家的分数覆盖了前一个玩家的分数

首先,如果您希望每次都添加文件而不是擦除和写入文件,那么请确保添加第二个参数true以使其附加文本。

您可以使用CSV文件将答案存储在列中,然后通过使用逗号解析数据来读取它们。

FileWriter fileW = new FileWriter("playerscores.txt", true);

希望对你有帮助。

相关内容

  • 没有找到相关文章

最新更新