Определите дату создания файла в Java

Существует другой подобный вопрос взорвать на StackOverflow (Как получить дату создания файла в Java), но ответ не действительно там, поскольку OP имел другую потребность, которая могла быть решена с помощью других механизмов. Я пытаюсь создать список файлов в каталоге, который может быть отсортирован по возрасту, следовательно потребность в дате создания файла.

Я не определил местоположение никакого хорошего способа сделать это после большого траления сети. Существует ли механизм для получения дат создания файла?

BTW, в настоящее время в системе Windows, возможно, понадобится это для работы над системой Linux также. Кроме того, я не могу гарантировать, что соглашение о присвоении имен файла сопровождалось бы, где дата создания / время встраивается в имя.

98
задан Community 23 May 2017 в 11:54
поделиться

3 ответа

Java nio имеет параметры для доступа к createTime и другим метаданным, если их предоставляет файловая система. Проверьте эту ссылку out

Например (Предоставляется на основе Комментарий @ ydaetskcoR):

Path file = ...;
BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);

System.out.println("creationTime: " + attr.creationTime());
System.out.println("lastAccessTime: " + attr.lastAccessTime());
System.out.println("lastModifiedTime: " + attr.lastModifiedTime());
155
ответ дан 24 November 2019 в 05:13
поделиться

В системе Windows вы можете использовать бесплатную библиотеку FileTimes .

В будущем это будет проще с Java NIO.2 (JDK 7) и пакетом java.nio.file.attribute .

Но помните, что большинство файловых систем Linux не поддерживают отметки времени создания файлов .

9
ответ дан 24 November 2019 в 05:13
поделиться

API java.io.File поддерживает только получение времени последнего изменения . И в Интернете по этой теме тоже очень тихо.

Если я не упустил что-то существенное, библиотека Java как есть (вплоть до Java 7, но еще не включая) не включает эту возможность. Поэтому, если вы отчаянно в этом нуждались, одним из решений было бы написать код C (++) для вызова системных подпрограмм и вызвать его с помощью JNI. Однако большая часть этой работы, похоже, уже сделана за вас в библиотеке под названием JNA .

Возможно, для этого вам все равно придется немного кодировать ОС на Java, поскольку вы, вероятно, не найдете те же системные вызовы, доступные в Windows и Unix / Linux / BSD / OS X.

{{ 1}}
9
ответ дан 24 November 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: