我正在用 LibGDX 开发一个游戏,我已经在少数计算机和各种操作系统上成功地测试了它。我将其发送给我的朋友进行测试,当游戏尝试保存时,他收到了这个神秘的错误。
系列活动如下:
- 游戏使用 Gdx.files.local(path).readString() 打开现有的保存文件
-LibGDX 的 readString 完成后关闭文件。我已经通过检查来源进行了验证。该文件永远不会再次打开。
- 一段时间后,游戏尝试覆盖文件,并收到以下错误。
java.io.FileNotFoundException: save.dat (The requested operation cannot be performed on a file with a user-mapped section open)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileOutputStream.<init>(Unknown Source)
at java.io.FileWriter.<init>(Unknown Source)
at engine.Data.writeFile(Data.java:60)
Run Code Online (Sandbox Code Playgroud)
writeFile 定义如下。第 60 行是“新 FileWriter”行。(为清楚起见,省略了日志记录)
public static boolean writeFile(String filename, String data) {
boolean success = false;
try {
FileWriter fw = new FileWriter(filename);
try {
fw.write(data);
success = true;
} catch(Exception e) {
success = false;
} finally {
fw.close();
}
} catch(Exception e) {
success = false;
}
return success;
}
Run Code Online (Sandbox Code Playgroud)
我不确定为什么它只发生在这台特定的计算机上 - 我已经在其他 Windows 7 计算机上对其进行了测试,但它们没有出现相同的问题。我的朋友也在他的另一台 Windows 7 计算机上进行了测试,没有出现任何问题。
这是我应该担心的事情,还是我应该将其归咎于一台易碎的计算机?还是我公然做错了什么?