希望有人以前看過。我試圖將所有目錄內容從源複製到不同的目錄,爲此我開始使用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();
}
呼喚目錄中的所有文件此方法。由此產生的尺寸也是原來尺寸的兩倍左右。如果我列出目錄的內容,它們是一樣的。
是否有任何缺失的參數或可能導致此大小差異的東西?
你確定你沒有運行兩次測試,在dest目錄下創建重複項(不知何故)? – 2011-06-06 14:01:00
也許在複製操作所在的目錄中存在軟鏈接或硬鏈接,而不僅僅是複製鏈接? – Sven 2011-06-06 14:03:40
@matt b - 我確定:),@Sven - 聽起來可能,現在檢查... – Dan 2011-06-06 14:04:53