我必须将服务器中的大文件从一个文件夹移动到另一个文件夹,我正在使用
FileUtils.moveDirectory(src, dst);
这很快,因为 moveDirectory
只是将 src
重命名为 dst
,在某些情况下,dst
是 sub src
文件夹中,它将文件复制到 dst
并从 src
中删除(在我的情况下 dst
永远不会发生这种情况)绝不是 src
的子目录)。
现在,FileUtils.moveDirectory(src, dst);
是否有可能失败,如果是,我的文件是否会在源中?因为这是唯一的副本,我不能丢失文件。要么完全移至 dst
,要么只是失败并将我的文件留在 src
。
最佳答案
简短回答:是的;即使出现问题,文件也会位于 src
中。
在低级别上,操作是复制然后删除,而不是重命名。这样,代码可以确保在任何情况下都不会在移动之前删除内容;从概念上讲,这意味着该文件可能不存在于 dest
中(磁盘空间不足),或者可能同时存在于 src
和 dest
中(删除许可被拒绝),但从未失踪。这也意味着在短时间内您将使用 2 倍的磁盘空间,因此请记住这一点。
FileUtils的源代码:参见第2881行
关于java - FileUtils.moveDirectory(src,dst) 在目录之间移动文件是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526391/