我创建了一个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);
希望对你有帮助。