Java 文件复制后目录大小不匹配
希望有人以前见过。我试图将所有目录内容从源目录复制到另一个目录,为此,我开始使用Commons FileUtils.copyDirectorytoDirectory方法(File src,File dest)。代码非常简单:Java 文件复制后目录大小不匹配,java,apache,nio,apache-commons,Java,Apache,Nio,Apache Commons,希望有人以前见过。我试图将所有目录内容从源目录复制到另一个目录,为此,我开始使用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 { Fil
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();
}
为目录中的每个文件调用此方法。这种变化产生的尺寸也是原始尺寸的两倍左右。如果我列出目录的内容,它们是相同的
是否有任何缺少的参数或可能导致此大小差异的东西?不确定发生了什么,但您可以。我相信这会很容易地消除差异。javadoc说
copyDirectoryToDirectory
将源目录及其所有内容复制到指定目标目录中同名的目录中
如果没有看到您的目录结构,我猜这可能会导致双重数据。你为什么不使用简单的 你确定你没有运行过两次测试,在dest dir中创建了副本(不知何故)?复制操作所遵循的目录中可能有软链接或硬链接,而不仅仅是复制链接?@matt b-我确定:),@Sven-听起来有可能,现在检查…与软链接或硬链接无关。跳过这些返回相同的输出文件大小是否正确?此命令不会报告任何差异。如果我列出两个文件中的文件,它们是相同的:(