1

我创建了一个 Java 游戏,当游戏结束时,会执行一个方法,告诉用户输入他/她的名字,然后他们的分数将保存在 playcores.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 但不幸的是无法弄清楚如何做到这一点,并且想知道它是否可能。此外,我想知道我应该使用什么类来完成这项工作。

4

3 回答 3

1

如果您乐于将新乐谱附加到文件末尾,请替换:

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

和:

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

如果您可以让多个用户同时玩,您还需要使用文件锁定,以避免访问文件时出现竞争条件。

于 2013-04-01T21:28:00.477 回答
1

要为多个人执行此操作,您应该以附加模式打开文件。

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

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

参数:

  • file - 要写入的 File 对象

  • append - 如果为真,那么字节将被写入文件的末尾而不是开头。

默认情况下,附加参数为false所以,早些时候,你用当前玩家的分数覆盖了前一位玩家的分数。

于 2013-04-01T21:28:52.323 回答
1

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

您可以使用 CSV 文件将答案存储在列中,然后使用逗号将其读出并解析数据。

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

希望有帮助。

于 2013-04-01T21:30:47.307 回答