Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.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 在目录之间移动文件是否安全_Java_File - Fatal编程技术网

Java 在目录之间移动文件是否安全

Java 在目录之间移动文件是否安全,java,file,Java,File,我必须将服务器中的巨大文件从一个文件夹移动到另一个文件夹,我正在使用 FileUtils.moveDirectory(src,dst) 这很快,因为moveDirectory只是将src重命名为dst,在某些情况下,dst是src的子文件夹,它会将文件复制到dst并从src中删除(在我的情况下,这种情况永远不会发生dst从来都不是src的子目录) 现在,是否有可能FileUtils.moveDirectory(src,dst)失败,如果是,我的文件是否在源代码中?因为这是唯一的副本,我不能丢失文

我必须将服务器中的巨大文件从一个文件夹移动到另一个文件夹,我正在使用

FileUtils.moveDirectory(src,dst)

这很快,因为
moveDirectory
只是将
src
重命名为
dst
,在某些情况下,
dst
src
的子文件夹,它会将文件复制到
dst
并从
src
中删除(在我的情况下,这种情况永远不会发生
dst
从来都不是
src
的子目录)


现在,是否有可能
FileUtils.moveDirectory(src,dst)失败,如果是,我的文件是否在源代码中?因为这是唯一的副本,我不能丢失文件。要么完全移动到
dst
,要么失败,将我的文件留在
src

简短回答:是;即使出现问题,文件也将位于
src

在较低级别,操作是复制然后删除,而不是重命名。这样,代码可以确保在任何情况下都不会在移动前删除内容;从概念上讲,这意味着文件可能不存在于
dest
中(磁盘空间不足),或者可能同时存在于
src
dest
(删除权限被拒绝),但从不丢失。也就是说,在短时间内,您将使用2倍的磁盘空间,所以请记住这一点


源代码:参见第2881行

所有软件都附带免责声明;在这种情况下,它可能会失败,您的文件可能会部分移动,跨驱动器移动文件没有任何原子保证。现在,如果它都在一个驱动器上,那么它应该是一个原子索引节点操作。