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