Java 无法让PrintWriter工作

Java 无法让PrintWriter工作,java,io,printwriter,Java,Io,Printwriter,我正在为一个游戏创建一个保存游戏文件,但是我的PrintWriter只是用我需要的数字而不是任何内容覆盖了该文件 代码如下: public void fileWriter() throws FileNotFoundException { PrintWriter print = new PrintWriter(new File("C:\\Users\\john\\Desktop\\stats.txt")); print.print(String.valueOf(this.sword

我正在为一个游戏创建一个保存游戏文件,但是我的
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 (PrintWriter writer = new PrintWriter(new File("C:\\Users\\john\\Desktop\\stats.txt"))) {
    // ...
}
这样你就不用担心关闭它了,
因此,您永远不能“忘记”它。

您应该正确使用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()
,以使类型转换更加明显。

你说它不起作用是什么意思?如果文件没有任何输出,请尝试在打印写入程序上关闭。最佳答案。我也喜欢关于使用
Integer.toString()
的注释。