猿问

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

我有一种方法可以加载文件,进行一些更改,然后再次保存。但是,为了防止保存过程中出现异常,我创建了一个新文件并首先保存到该文件(因为格式不正确的数据会在保存过程中导致异常)。保存完成后,我删除原始文件并将新文件重命名为原始文件的名称。


代码基本上是这样的:


MyDataClass.save(tempfile);

originalfile.delete();

tempfile.renameTo(originalfile);

问题是对renameTo方法的调用始终返回“false”,并且新文件 (tempfile) 保留其创建时使用的随机名称(原始文件被删除)。


任何人都猜测为什么重命名失败?


慕田峪4524236
浏览 503回答 2
2回答

湖上湖

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

森栏

我猜这可能是因为程序无法检查文件删除的最近状态。您可以通过尝试以下代码来调试它: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 detectedtempfile.renameTo(originalfile);另外,我看到您已使用 MyDataClass.save 保存文件。请检查您是否在保存后关闭了文件。如果在您尝试重命名时文件被锁定,则它可能不起作用此外,如果您使用 Windows 资源管理器查看文件,您可能需要刷新以查看最近创建的文件
随时随地看视频慕课网APP

相关分类

Java
我要回答