Существует другой подобный вопрос взорвать на StackOverflow (Как получить дату создания файла в Java), но ответ не действительно там, поскольку OP имел другую потребность, которая могла быть решена с помощью других механизмов. Я пытаюсь создать список файлов в каталоге, который может быть отсортирован по возрасту, следовательно потребность в дате создания файла.
Я не определил местоположение никакого хорошего способа сделать это после большого траления сети. Существует ли механизм для получения дат создания файла?
BTW, в настоящее время в системе Windows, возможно, понадобится это для работы над системой Linux также. Кроме того, я не могу гарантировать, что соглашение о присвоении имен файла сопровождалось бы, где дата создания / время встраивается в имя.
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());
В системе Windows вы можете использовать бесплатную библиотеку FileTimes .
В будущем это будет проще с Java NIO.2 (JDK 7) и пакетом java.nio.file.attribute .
Но помните, что большинство файловых систем Linux не поддерживают отметки времени создания файлов .
API java.io.File
поддерживает только получение времени последнего изменения . И в Интернете по этой теме тоже очень тихо.
Если я не упустил что-то существенное, библиотека Java как есть (вплоть до Java 7, но еще не включая) не включает эту возможность. Поэтому, если вы отчаянно в этом нуждались, одним из решений было бы написать код C (++) для вызова системных подпрограмм и вызвать его с помощью JNI. Однако большая часть этой работы, похоже, уже сделана за вас в библиотеке под названием JNA .
Возможно, для этого вам все равно придется немного кодировать ОС на Java, поскольку вы, вероятно, не найдете те же системные вызовы, доступные в Windows и Unix / Linux / BSD / OS X.
{{ 1}}