gpt4 book ai didi

java - FileUtil.copyMerge 不只是删除合并的文件?

转载 作者:可可西里 更新时间:2023-11-01 16:06:30 28 4
gpt4 key购买 nike

我正在研究 hadoop-core 库中的 FileUtil.copyMerge 方法,虽然我不是 Java 专家,但我有一种沉沦的感觉,它不会删除具有被复制和合并。我认为它只是从特定路径中删除了所有内容,这意味着如果在复制合并期间添加了文件,它们也会被删除,即使它们可能没有被复制合并。

这是来自 source code 的相关部分:

public static boolean copyMerge(FileSystem srcFS, Path srcDir,
FileSystem dstFS, Path dstFile,
boolean deleteSource,
Configuration conf, String addString) throws IOException {
dstFile = checkDest(srcDir.getName(), dstFS, dstFile, false);

if (!srcFS.getFileStatus(srcDir).isDirectory())
return false;

OutputStream out = dstFS.create(dstFile);

try {
FileStatus contents[] = srcFS.listStatus(srcDir);
Arrays.sort(contents);
for (int i = 0; i < contents.length; i++) {
if (contents[i].isFile()) {
InputStream in = srcFS.open(contents[i].getPath());
try {
IOUtils.copyBytes(in, out, conf, false);
if (addString!=null)
out.write(addString.getBytes("UTF-8"));

} finally {
in.close();
}
}
}
} finally {
out.close();
}


if (deleteSource) {
return srcFS.delete(srcDir, true);
} else {
return true;
}
}

最后的 if (deleteSource) 语句独立于 else if (srcFS.isFile(src)) 中发生的事情,对我来说这表明一旦顶部位已完成并且 deleteSource 设置为 true,它只是从 src 中删除所有文件,无论它们是否已添加到复制合并后.

我的解释正确吗?

最佳答案

Is my interpretation correct?

我不这么认为。如果在复制合并阶段出现任何问题,则 copyMerge 调用将终止并出现异常。这发生在它进入删除阶段之前。

关于java - FileUtil.copyMerge 不只是删除合并的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36308566/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com