«1. Обзор

В JDK 7 появилась возможность получить дату создания файла.

В этом уроке мы узнаем, как получить к нему доступ через java.nio.

2. Files.getAttribute

Один из способов получить дату создания файла — использовать метод Files.getAttribute с заданным путем:

try {
    FileTime creationTime = (FileTime) Files.getAttribute(path, "creationTime");
} catch (IOException ex) {
    // handle exception
}

Тип createTime — FileTime, но из-за того, что что метод возвращает Object, мы должны его привести.

FileTime хранит значение даты в качестве атрибута метки времени. Например, его можно преобразовать в Instant с помощью метода toInstant().

Если файловая система не хранит дату создания файла, метод вернет null.

3. Files.readAttributes

Другой способ получить дату создания — с помощью Files.readAttributes, который для заданного пути возвращает сразу все основные атрибуты файла:

try {
    BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
    FileTime fileTime = attr.creationTime();
} catch (IOException ex) {
    // handle exception
}

Метод возвращает BasicFileAttributes, которые мы можем использовать для получения основных атрибутов файла. Метод createTime() возвращает дату создания файла как FileTime.

На этот раз, если файловая система не хранит дату создания файла, метод вернет дату последнего изменения. Если дата последнего изменения также не сохраняется, то будет возвращена эпоха (01.01.1970).

4. Заключение

В этом уроке мы научились определять дату создания файла в Java. В частности, мы узнали, что это можно сделать с помощью Files.getAttribute и Files.readAttributes.

Как всегда, код для примеров доступен на GitHub.