无法使PrintWriter工作

时间:2015-08-29 17:41:28

标签: 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.swordNumber) + " ");
    print.print(String.valueOf(this.shieldNumber) + " ");
    print.print(String.valueOf(this.monstersDefeated) + " ");
    print.print(String.valueOf(this.damageDealt));
}

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

2 个答案:

答案 0 :(得分:5)

您应该正确使用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));
    }
}

而不是String.valueOf()我建议使用Integer.toString()来使类型转换更加明显。

答案 1 :(得分:2)

退出之前没有关闭流 它没有得到冲洗和正确关闭。 写完后添加这一行:

print.close();

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

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

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

这样你不必担心关闭它, 因此你永远不会“忘记”它。