Java 中最安全的移动目录
Safest Move Directory in Java
我正在寻找在 Java 中移动目录的最安全方法。我现在的代码基本上是
Path destPath = Paths.get(parentPath.toString().replace("service", "input"));
org.apache.commons.io.FileUtils.deleteQuietly(destPath.toFile());
org.apache.commons.io.FileUtils.moveDirectory(parentPath.toFile(), destPath.toFile());
其中 parentPath 类似于 /dir/service/,因此 destPath 为 /dir/input/。
我的问题是,虽然这种方法在 99% 的情况下都有效,但在某些情况下它会失败并删除它应该移动的目录中的文件。 (它在 moveDirectory 函数上启动 IOException,声称无法删除目录)。
我需要一种方法来确保这个问题不会发生(或者至少我的文件是安全的),因为我无法承受丢失这些文件的后果。
我也对任何新方法持开放态度,我只需要它是安全的并且不会太慢(假设我的方法将始终处理大量目录)。
"safest" 解决方案可能是先复制一个文件,然后检查副本是否与源文件相同 - 然后删除源文件。如果出现问题,你就停在那里。
缺点是您可能必须手动执行此操作。但是,如果数据完整性是您的主要要求,那么您应该从单个文件的角度来看问题。
我正在寻找在 Java 中移动目录的最安全方法。我现在的代码基本上是
Path destPath = Paths.get(parentPath.toString().replace("service", "input"));
org.apache.commons.io.FileUtils.deleteQuietly(destPath.toFile());
org.apache.commons.io.FileUtils.moveDirectory(parentPath.toFile(), destPath.toFile());
其中 parentPath 类似于 /dir/service/,因此 destPath 为 /dir/input/。
我的问题是,虽然这种方法在 99% 的情况下都有效,但在某些情况下它会失败并删除它应该移动的目录中的文件。 (它在 moveDirectory 函数上启动 IOException,声称无法删除目录)。
我需要一种方法来确保这个问题不会发生(或者至少我的文件是安全的),因为我无法承受丢失这些文件的后果。
我也对任何新方法持开放态度,我只需要它是安全的并且不会太慢(假设我的方法将始终处理大量目录)。
"safest" 解决方案可能是先复制一个文件,然后检查副本是否与源文件相同 - 然后删除源文件。如果出现问题,你就停在那里。
缺点是您可能必须手动执行此操作。但是,如果数据完整性是您的主要要求,那么您应该从单个文件的角度来看问题。