java - FileUtils.moveDirectory(src,dst) 在目录之间移动文件是否安全

标签 java file

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

FileUtils.moveDirectory(src, dst);

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

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

最佳答案

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

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

FileUtils的源代码:参见第2881行

关于java - FileUtils.moveDirectory(src,dst) 在目录之间移动文件是否安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55526391/

相关文章:

java - 如何将数组写入文件Java

Java找不到文件?

java - 在包 'layout_alignParentEnd' Activity_post.xml/DispatchActivity/res/layout 第 23 行中找不到属性 'android' 的资源标识符

java - 如何从 Netbeans 从命令行创建的 ant 项目运行单个 junit 测试?

java - Clojure程序的执行时间

C 程序无法读取 .txt 文件中的用户名和密码

HTML - 像 Web 浏览器通常那样加载图像

java - 物体朝错误的方向移动

java - 在 java 中保存和检索文件扩展名时的小问题

c - 如何在 C 中截断文件?