可能重复:
如何在Java中原子地重命名文件,即使dest文件已经存在?
我正在处理一个可能在工作中被扼杀的过程。我想重命名一个文件。Java的重命名操作是原子操作吗?
我对Linux、HP-UX、Solaris和AIX的情况感兴趣。
重命名操作可能是原子操作,也可能不是原子操作,它可能成功,也可能不成功如果目标名称下已存在文件或目录。在Unix上有两个独立的操作必须执行。第一个必须测试目标名称下是否存在文件。然后,如果不存在这样的文件,可以继续将源文件重命名为目标名称。在这两个操作之间,可能会在目标名称下创建一个新文件,因为rename()系统调用是原子的,会破坏目标,所以这个新文件将被删除。
否。
至少是因为VM可能在离开代码之后(在您输入File.rename()之后),在File.reame()代码开始运行之前被杀死