无法让 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()
,以使类型转换更明显。
我正在为一个游戏创建游戏存档文件,但我的 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()
,以使类型转换更明显。