【问题标题】:PrintWriter overwrite data [duplicate]PrintWriter 覆盖数据 [重复]
【发布时间】:2015-11-24 21:34:50
【问题描述】:

我正在尝试通过以下方式记录我正在制作的游戏中的高分:

PrintWriter out = new PrintWriter(new File("path"));
while(gameLoop) {
    out.write(highScore);
    out.flush();
}

它不断将数据附加到文件的末尾。我知道我可以out.close(); 然后out = new PrintWriter(new File("path")); 但这似乎有很多多余的代码。不断关闭和重新打开文件以实现覆盖。我的PrintWriter 有什么方法可以在不关闭并重新打开文件的情况下覆盖数据?

【问题讨论】:

    标签: java file-io printwriter


    【解决方案1】:

    首先,我建议您使用print(或println)和PrintWriter。接下来,如果我理解你的问题,你可以使用try-with-resources Statement 之类的东西

    while (gameLoop) {
        try (PrintWriter out = new PrintWriter(new File("path"))) {
            out.println(highScore);
        }
    }
    

    这将close 并在循环的每次迭代中重新打开PrintWriter。或者,您可以使用 nio 和类似的东西

    Path file = Paths.get("path");  
    while (gameLoop) {
        byte[] buf = String.valueOf(highScore).getBytes();
        Files.write(file, buf);
    }
    

    【讨论】:

    • 嗯,我希望避免不断关闭和重新打开文件,因为我觉得这只会增加开销,但可能不会。无论哪种方式,它都解决了我的问题。不过,nio 解决方案可能更适合我。
    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 2012-04-24
    • 1970-01-01
    • 2023-03-04
    • 2011-05-13
    • 2020-05-23
    • 2021-04-17
    • 2015-09-26
    相关资源
    最近更新 更多