FileUtils.moveDirectory(src,dst)在目录之间移动文件安全吗

时间:2019-04-04 23:41:23

标签: java file

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

FileUtils.moveDirectory(src, dst);

这是快速的,因为moveDirectory只是将src重命名为dst,在某些情况下,dstsrc的子文件夹,它将文件复制到dst并从src中删除(在我看来,dst从来都不是src的子目录)。

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

1 个答案:

答案 0 :(得分:1)

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

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

FileUtils的源代码:请参见第2881行