是FileUtils.moveDirectory(src,dst)可以安全地在目录之间移动文件

问题描述 投票:0回答:1

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

FileUtils.moveDirectory(src, dst);

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

现在,FileUtils.moveDirectory(src, dst);有可能失败,如果是的话,我会将我的文件存入源代码吗?因为这是唯一的副本,我不能松散文件。要么完全移动到dst,要么失败并将我的文件留在src

java file
1个回答
1
投票

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

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

FileUtils的源代码:见第2881行

© www.soinside.com 2019 - 2024. All rights reserved.