希望有人见过。我试图将所有目录内容从源复制到另一个目录,为此,我开始使用Commons FileUtils.copyDirectorytoDirectory方法(File src,File dest)。代码很简单:
public static void copyDirtoDir(String src, String dest) {
File s = new File(src);
File d = new File(dest);
try {
FileUtils.copyDirectoryToDirectory(s, d);
} catch (IOException e) {
e.printStackTrace();
}
}
为了在Linux上运行此测试,我将应用程序作为JAR运行,并从命令行传递src和dest字符串。问题是,当我在执行后检查生成的目录大小时,存在巨大的差异(复制的目录大约是原始目录的两倍-使用'du -sh'检查)。
然后,我简单地尝试使用nio.FileChannels,如下所示:
public static void copyFile(File in, File out) throws IOException {
FileChannel source = new FileInputStream(in).getChannel();
FileChannel destination = new FileOutputStream(out).getChannel();
source.transferTo(0, source.size(), destination);
source.close();
destination.close();
}
为目录中的每个文件调用此方法。这种变化产生的大小也大约是原始大小的两倍。如果我列出目录的内容,它们是相同的。
是否有任何遗漏的参数或可能导致此大小差异的内容?
最佳答案
不知道发生了什么,但是您可以use diff to diff directories。我相信这将轻松缩小差异。