希望有人见过。我试图将所有目录内容从源复制到另一个目录,为此,我开始使用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。我相信这将轻松缩小差异。

08-18 10:32
查看更多