1

可能重复:
即使目标文件已经存在,如何在 Java 中自动重命名文件?

我正在处理一个可能在工作中被杀死的进程。我想重命名一个文件。Java的重命名操作是原子操作吗?

我对 Linux、HP-UX、Solaris 和 AIX 的情况感兴趣。

4

2 回答 2

0

命名操作可能是原子的,也可能不是原子的,如果目标名称下已经存在文件或目录,它可能成功也可能不成功。在 Unix 上,必须执行两个单独的操作。首先必须测试目标名称下是否存在文件。然后,如果不存在这样的文件,则可以继续将源文件重命名为目标名称。在这两个操作之间,可能会在目标名称下创建一个新文件,并且因为 rename() 系统调用是原子的并且会破坏目标,所以这个新文件将被删除。

于 2011-05-24T17:29:03.560 回答
0

不。

至少因为 VM 可能在它离开你的代码之后(在你输入 File.rename() 之后)并且在 File.rename() 代码开始运行之前被杀死。

于 2011-05-24T17:31:31.443 回答