Надеюсь, кто-то видел это раньше. Я пытаюсь скопировать все содержимое каталога из источника в другой каталог, и для этого я начал использовать метод 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 из командной строки. Проблема в том, что когда я проверяю размер результирующего каталога после выполнения, возникает огромная разница в размере (поскольку скопированный dir примерно вдвое больше исходного размера - проверяется с помощью '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();
}
Вызов этого метода для каждого файла в каталоге. Результирующий размер из этого варианта также примерно вдвое больше оригинала. Если я сделаю список содержимого каталогов, они будут одинаковыми.
Есть какой-либо пропущенный параметр или что-то, что может быть причиной этой разницы в размерах?