Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的File.rename()是一个原子操作吗?_Java_Linux_Unix_File Rename_Atomicity - Fatal编程技术网

Java中的File.rename()是一个原子操作吗?

Java中的File.rename()是一个原子操作吗?,java,linux,unix,file-rename,atomicity,Java,Linux,Unix,File Rename,Atomicity,可能重复: 我正在处理一个进程,这个进程可能会在工作过程中被终止。我想重命名一个文件。Java的重命名操作是原子操作吗 我对Linux、HP-UX、Solaris和AIX的情况很感兴趣。该操作可能是原子操作,也可能不是原子操作,也可能不会成功 如果目标名称下已存在文件或目录。在Unix上,有两个单独的操作 必须执行。首先必须测试目标名称下是否存在文件。然后,如果不存在这样的文件,可以继续将源文件重命名为目标名称。在这两个操作之间,可能会在目标名称下创建一个新文件,因为rename()系统调用是

可能重复:

我正在处理一个进程,这个进程可能会在工作过程中被终止。我想重命名一个文件。Java的重命名操作是原子操作吗

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

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

没有


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

也许这个问题可以帮助您:但是进程被杀死的场景呢?@Marcelo:看起来另一个问题是关于通过重命名覆盖;这是关于普通重命名的问题。对不起,我回答错了。我相信这应该是操作系统的特性