当前位置: 首页 > 知识库问答 >
问题:

FileWriter,如何在同一文档上写入[重复]

咸亦
2023-03-14

我创建了一个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,但不幸的是,我不知道该怎么做,我想知道这是否可行。此外,我想知道我应该使用什么类来完成这项工作。

共有3个答案

贺高杰
2023-03-14

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

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

FileWriter fileW=new FileWriter(“playerscores.txt”,true)

希望这有帮助。

闽鸿宝
2023-03-14

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

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

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

参数:

>

  • 文件-要写入的文件对象

    append-如果为true,则字节将写入文件的末尾而不是开头。

    默认情况下,append参数为false。因此,之前,您用当前玩家覆盖了前一个玩家的分数。

  • 凌鹏程
    2023-03-14

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

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

    使用:

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

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

     类似资料:
    • 相应的,文件读取有了,自然有文件写入类,使用方式与FileReader也类似: FileWriter writer = new FileWriter("test.properties"); writer.write("test"); 写入文件分为追加模式和覆盖模式两类,追加模式可以用append方法,覆盖模式可以用write方法,同时也提供了一个write方法,第二个参数是可选覆盖模式。 同样,

    • 问题内容: 我有下面的代码 执行后,文件创建成功,但创建的文件为空 那么代码有什么问题呢? 问题答案: 您必须关闭,否则不会刷新当前缓冲区。您可以直接调用该方法。 如果要关闭文件,则无需使用该方法。该可用于例如,如果一会你的程序运行和输出文件中的东西,你想在其他地方检查。

    • 大家早上好,我写信给你是为了帮助我一个包含错误的方法。我试图自动化一个测试写一个文本上document.body.inner超文本标记语言的方法,但它的代码行块。我怎么做才能修复此错误:"org.openqa.selenium.JavascriptExcture: SynTaxError:意外令牌:标识符"。谢谢你的帮助。这是我的部分代码: public void publishCommentIn

    • 我有一个fileWrite()方法,它接受两个字符串值作为参数(特定的数组值)。我将此方法包含在for循环中,这样它就可以循环遍历数组并获得要写入文件的字符串值 我在代码中包含的方法如下所示: 似乎只是将数组中的最后一个值写入文本文件。

    • 我想删除文件的标题,并替换同一文件中没有标题的内容。 示例: 输出应该是: 情况是我不想为此更改创建任何新文件。可以这样做吗? 我尝试了: 但这不起作用。感谢您的帮助!

    • 问题内容: 我正在尝试在同一CSV文件上进行读写: 我的csv文件是: 所以基本上,如果我的价值是我想用代替。上面的代码给了我空的CSV文件。 问题答案: 您应该使用其他输出文件名。即使您希望名称相同,也应该使用一些临时名称并最终重命名文件。 当您以“ w”(或“ wb”)模式打开文件时,此文件被“清除”-整个文件内容消失。的Python文档说: …“ w”仅用于写入(具有相同名称的现有文件将被删