为了账号安全,请及时绑定邮箱和手机立即绑定

尝试在 Java 中重命名文件不起作用

尝试在 Java 中重命名文件不起作用

慕田峪4524236 2021-12-01 17:05:17
我有一种方法可以加载文件,进行一些更改,然后再次保存。但是,为了防止保存过程中出现异常,我创建了一个新文件并首先保存到该文件(因为格式不正确的数据会在保存过程中导致异常)。保存完成后,我删除原始文件并将新文件重命名为原始文件的名称。代码基本上是这样的:MyDataClass.save(tempfile);originalfile.delete();tempfile.renameTo(originalfile);问题是对renameTo方法的调用始终返回“false”,并且新文件 (tempfile) 保留其创建时使用的随机名称(原始文件被删除)。任何人都猜测为什么重命名失败?
查看完整描述

2 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

我终于发现了这个问题。问题是,我使用的是 Apache POI(Microsoft Excel 库),但它不会像应有的那样保存更新。尝试保存到现有文件会导致异常,所以我想我会保存到第二个文件,然后删除原始文件/重命名新文件。然而,事实证明,将它保存到一个新文件的行为也会导致它保存到原始文件中!!所以我只需要保存到一个临时文件然后删除它......


查看完整回答
反对 回复 2021-12-01
?
森栏

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 资源管理器查看文件,您可能需要刷新以查看最近创建的文件


查看完整回答
反对 回复 2021-12-01
  • 2 回答
  • 0 关注
  • 502 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信