无法让 PrintWriter 工作

Cant get PrintWriter to work

我正在为一个游戏创建游戏存档文件,但我的 PrintWriter 只是覆盖了文件,没有覆盖我需要的数字。

代码如下:

public void fileWriter() throws FileNotFoundException {
    PrintWriter print = new PrintWriter(new File("C:\Users\john\Desktop\stats.txt"));
    print.print(String.valueOf(this.swordNumber) + " ");
    print.print(String.valueOf(this.shieldNumber) + " ");
    print.print(String.valueOf(this.monstersDefeated) + " ");
    print.print(String.valueOf(this.damageDealt));
}

我已经尝试了所有方法来打印这些变量,包括 String.valueOf 但它不起作用。

您在退出前没有关闭流, 并且没有正确冲洗和关闭。 写完后添加这一行:

print.close();

您应该始终在使用后关闭文件句柄。

更好的是,将整个内容包装在 try-with-resources 中:

try (PrintWriter writer = new PrintWriter(new File("C:\Users\john\Desktop\stats.txt"))) {
    // ...
}

这样你就不用担心关闭它了, 因此你永远无法 "forget" 它。

您应该正确使用 Java 的资源 try-catch 块。即使抛出任何异常,这也会自动关闭流:

public void fileWriter() throws FileNotFoundException {
    File file = new File("C:\Users\john\Desktop\stats.txt");
    try (PrintWriter print = new PrintWriter(file)) {
        print.print(Integer.toString(swordNumber) + " ");
        print.print(Integer.toString(shieldNumber) + " ");
        print.print(Integer.toString(monstersDefeated) + " ");
        print.print(Integer.toString(damageDealt));
    }
}

此外,我建议使用 Integer.toString() 而不是 String.valueOf(),以使类型转换更明显。