Как присвоить атрибут даты изменения файлу на сервере? Использую SMBJ библиотеку

Для копирования файла я использую такую конструкцию:

SmbFiles.copy(local_file_path, share, path_for_server, true);

Но она лишь копирует файл на сервер при этом не присваивая атрибуты локального файла такие как дата создания, изменения. Как я понял метод copy не обладает подобными возможностями.

Для этого у меня есть другой код который может присвоить атрибуты файлу на сервере, но только с другого удаленного файла на том же самом сервере:

try (DiskShare share = (DiskShare) session.connectShare(shareName)) {
            String original = path + "2.txt"; // file name on the server
            String dest = path + "4.txt"; // file name on the server
            FileBasicInformation current = share.getFileInformation(original, FileBasicInformation.class);

        long newAttrs = current.getFileAttributes() ^ FileAttributes.FILE_ATTRIBUTE_READONLY.getValue();
        FileBasicInformation update = new FileBasicInformation(
                current.getCreationTime(),
                current.getLastAccessTime(),
                current.getLastWriteTime(),
                current.getChangeTime(),
                newAttrs
        );

        DiskEntry e = share.open(dest, EnumSet.of(AccessMask.FILE_WRITE_ATTRIBUTES), (Set) null,
                SMB2ShareAccess.ALL, SMB2CreateDisposition.FILE_OPEN, (Set) null);

        e.setFileInformation(update);

    } catch (
            IOException e) {
        e.printStackTrace();
    }

Вопрос в том как при копировании локального файла на сервер так-же перенести его атрибуты?

Пробовал подставить вместо current.getChangeTime()... вывод из базового пакета java nio.file.attribute.FileTime, так-как SMBJ внутри имеет такой же класс и обращается к нему за выводом, но FileBasicInformation принимает данные только от внутренних классов, может есть другой способ, стандартный для данной библиотеки.

Буду рад любым предложениям. Спасибо.


Ответы (1 шт):

Автор решения: Jonathan

Решение найденно: Запросить дату модификации локального файла через Date, конвертировать вывод lastModDate с помощью FileTime обязательно из библиотеки SMBJ не из nio, fileTime передать в FileBasicInformation.

File file = new java.io.File(String.valueOf(localfile));
Date lastModDate = new Date(file.lastModified());
com.hierynomus.msdtyp.FileTime fileTime = FileTime.fromDate(lastModDate);

long newAttrs = ....

FileBasicInformation update = new FileBasicInformation(
                current.getCreationTime(),
                current.getLastAccessTime(),
                fileTime,
                current.getChangeTime(),
                newAttrs
        );
DiskEntry e = ....
→ Ссылка