Как использовать Java FileChannel для копирования сохраняющихся отметок времени для файлов и каталогов? Похоже, файлы не сохраняют метки времени при копировании в другое место. Как это возможно с помощью FileChannel в Java?

2
Marvado 24 Мар 2014 в 21:15

2 ответа

Лучший ответ

Вы не можете сделать это с помощью FileChannel, вы можете использовать apache commons io:

IOUtils.copy(new FileInputStream(file), new FileOutputStream(file2));
// copy file and preserve the time stamp. the sourceFile and destFile are of type java.io.File
FileUtils.copyFile(sourceFile,destFile);

Ссылка: http://www.studytrails.com/java -io / file-copying-and-moving-deleting.jsp

1
Shreyos Adikari 24 Мар 2014 в 21:20
Нет... Атрибуты не копируются... Временные метки да, но только временные метки
 – 
fge
24 Мар 2014 в 21:20

Это не роль FileChannel. FileChannel - это просто оболочка над байтовым каналом.

Вместо этого вы хотите использовать для этого «новый» файловый API Java 7. Если вы хотите скопировать файл в место с сохранением атрибутов, вы можете сделать это:

Files.copy(src, dst, StandardCopyOption.COPY_ATTRIBUTES);
2
fge 24 Мар 2014 в 21:20
Следует отметить, что, как указано в его javadoc, COPY_ATTRIBUTES является только "наилучшей основой". Кроме «измененной временной метки», ничто другое не гарантируется.
 – 
Manu Manjunath
15 Мар 2020 в 18:24