Копирование составного файла с атрибутами - как получить правильное время создания

Я работаю над загрузчиком файлов, который генерирует метаданные из файлов и отправляет их в базу данных метаданных.

Проблема в том, что загрузить их с исходным временем создания кажется невозможным. Я начал с этого руководства https://spring.io/guides/gs/uploading-files/ и большинство других, которые я нашел в Интернете, очень похожи. На сервере работает html-форма, которая используется для загрузки файлов. Из html-формы вы получаете MultipartFile, и загрузка выглядит так:

Files.copy(file.getInputStream(), this.rootLocation.resolve(filename),StandardCopyOption.REPLACE_EXISTING);

Проблема в том, что StandardCopyOption.REPLACE_EXISTING заменяет существующее время создания. StandardCopyOption.COPY_ATTRIBUTES поддерживается только для Files.copy(Path source, Path target). Все остальные варианты копирования MultipartFile, которые я нашел, тоже заменяют время создания.

Чтобы узнать время создания, я использую это:

BasicFileAttributes attributes = Files.readAttributes(filePath, BasicFileAttributes.class); 
LocalDateTime ct = LocalDateTime.ofInstant(attributes.creationTime().toInstant(), ZoneId.systemDefault());

Есть ли способ загрузить файл с исходными свойствами?

Спасибо за каждый конструктивный ответ - даже при использовании другого фреймворка, кроме spring -boot.

отредактировал заголовок, чтобы быть более точным

healadin 06.11.2018 23:44

отредактировал еще раз

healadin 08.11.2018 12:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
191
0

Другие вопросы по теме