【问题标题】:Cant get PrintWriter to work无法让 PrintWriter 工作
【发布时间】:2015-08-29 17:41:28
【问题描述】:

我正在为游戏创建一个保存游戏文件,但我的 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,但它不起作用。

【问题讨论】:

  • 它不起作用是什么意思?如果文件没有任何输出,请在打印写入器上尝试close

标签: java io printwriter


【解决方案1】:

您应该正确使用 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() 的说明。
【解决方案2】:

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

print.close();

你应该总是在使用后关闭文件句柄。

更好的是,将整个事情包装在一个 try-with-resources 中:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-23
    • 2014-12-26
    • 2017-12-22
    • 2012-02-28
    相关资源
    最近更新 更多