Просто используйте Path API, если можете.
Например, чтобы сохранить все атрибуты исходного файла в новом файле, используйте Files.copy(Path source, Path target, CopyOption... options)
:
try {
Path copiedFile =
Files.copy(Paths.get("D:\\test\\test.txt"), Paths.get("D:\\test.txt"),
StandardCopyOption.COPY_ATTRIBUTES);
}
catch (IOException e){
// handle that
}
Состояние перечисления StandardCopyOption.COPY_ATTRIBUTES
:
Как минимум время последнего изменения копируется в целевой файл, если поддерживается как исходным, так и целевым хранилищами файлов.
Если вы хотите скопировать только последний измененный атрибут времени, который не является более сложным, просто добавьте этот параметр после копирования и удалите аргумент CopyOption
, например:
Path originalFile = Paths.get("D:\\test.txt")
try {
Path copiedFile =
Files.copy(Paths.get("D:\\test\\test.txt"), originalFile);
Files.setLastModifiedTime(copiedFile,
Files.getLastModifiedTime(originalFile));
}
catch (IOException e){
// handle that
}
Наконец, обратите внимание, что Path и File совместимы: Path.toFile()
возвращает соответствующие File
, а File.toPath()
возвращает соответствующие Path
.
Так что даже если вы манипулируете File
s в качестве ввода, реализация все еще может использовать API Path
, не нарушая его.