2 回答
TA贡献2003条经验 获得超2个赞
我终于发现了这个问题。问题是,我使用的是 Apache POI(Microsoft Excel 库),但它不会像应有的那样保存更新。尝试保存到现有文件会导致异常,所以我想我会保存到第二个文件,然后删除原始文件/重命名新文件。然而,事实证明,将它保存到一个新文件的行为也会导致它保存到原始文件中!!所以我只需要保存到一个临时文件然后删除它......
TA贡献1810条经验 获得超5个赞
我猜这可能是因为程序无法检查文件删除的最近状态。您可以通过尝试以下代码来调试它:
MyDataClass.save(tempfile);
if(originalfile.delete()==true){
tempfile.renameTo(originalfile);
}
else{
System.out.println("File is not deleted");
}
或者你可以试试这个。
MyDataClass.save(tempfile);
originalfile.delete();
Thread.sleep(4000);//Make the thread sleep so that the recent status can be detected
tempfile.renameTo(originalfile);
另外,我看到您已使用 MyDataClass.save 保存文件。请检查您是否在保存后关闭了文件。
如果在您尝试重命名时文件被锁定,则它可能不起作用
此外,如果您使用 Windows 资源管理器查看文件,您可能需要刷新以查看最近创建的文件
添加回答
举报