我想使用java覆盖文本文件,首先创建一个新文件,然后删除旧文件,最后重命名我刚创建的文件,使用与旧文件相同的名称。 但我的代码不起作用。
File oldFile = new File("charList.txt");
File newFile = new File("new.txt");
oldFile.deleteOnExit();
if(oldFile.delete()){
newFile.renameTo(oldFile);
}
答案 0 :(得分:0)
在某些平台(例如Windows!)上,您无法删除当前程序或其他程序已打开的文件。我希望这是导致程序中的删除步骤失败的原因......如果这是实际发生的事情。
正如@Matt Ball的评论指出的那样,重命名可能是失败的......因为在你向我们展示的代码中,你实际上是在将“new.txt”重命名为自己!
最后,您的oldFile.deleteOnExit()
电话几乎肯定不正确:
这不会影响以下代码中oldFile
的删除...如果这是您的意图。
如果确实成功,它会(我认为!)删除您仔细重命名为“charList.txt”的文件。 File
表示文件路径名...不是文件句柄。
答案 1 :(得分:0)
deleteOnExit()
,您将在虚拟机终止时删除oldFile。我认为这不是您想要的,因为您在下一个命令中对同一文件调用delete()
。此外,您正在将newFile重命名为newFile而不是oldFile。尝试
newFile.renameTo(的oldfile)