可能重复:
How to atomically rename a file in Java, even if the dest file already exists?
我正在处理一个可能在工作中被杀的过程。我想重命名一个文件。 Java的重命名操作是原子操作吗?
我对Linux,HP-UX,Solaris和AIX感兴趣。
答案 0 :(得分:0)
Rename操作可能是也可能不是原子操作,可能会也可能不会成功 如果一个文件或目录已存在于目标名称下。在Unix上有两个单独的操作 必须执行。首先必须测试目标名称下是否存在文件。然后,如果不存在此类文件,则可以继续将源文件重命名为目标名称。在这两个操作之间,可能会在目标名称下创建一个新文件,因为rename()系统调用是原子的,并且将销毁目标,这个新文件将被删除。
答案 1 :(得分:0)
没有
至少因为VM可能在它离开你的代码之后(在你输入File.rename()之后)以及在File.rename()代码开始运行之前被杀死。