0

我想使用java覆盖文本文件,首先创建一个新文件,然后删除旧文件,最后用与旧文件相同的名称重命名我刚刚创建的文件。但是我的代码不起作用。

                File oldFile = new File("charList.txt");
                    File newFile = new File("new.txt");
                    oldFile.deleteOnExit();

                    if(oldFile.delete()){
                       newFile.renameTo(oldFile);
                    }
4

2 回答 2

0

在某些平台上(例如 Windows!),您无法删除当前程序或其他程序已打开的文件。我希望这就是导致程序中的删除步骤失败的原因......如果这是实际发生的情况。

正如@Matt Ball 的评论所指出的,可能是重命名失败了......因为在您向我们展示的代码中,您实际上是在将“new.txt”重命名为它自己!

最后,你的oldFile.deleteOnExit()电话几乎肯定是不正确的:

  • 它不会影响oldFile以下代码中的删除...如果这是您的意图。

  • 如果确实成功,它将(我认为!)删除您仔细重命名为“charList.txt”的文件。AFile表示文件路径名......不是文件句柄。

于 2013-11-10T06:22:53.237 回答
0
  • deleteOnExit()虚拟机终止时,您将删除 oldFile。我认为这不是您想要的,因为您delete()在下一个命令中调用同一个文件。
  • 此外,您将 newFile 重命名为 newFile 而不是 oldFile。尝试

    newFile.renameTo(oldFile)

于 2013-11-10T06:24:45.917 回答