Получение временной метки создания файла в Java

Узнайте, как получить дату и время создания файла в Java с помощью API Java NIO. Это может быть полезно для сравнения временных меток файлов перед окончательным удалением старых файлов.

1. Атрибуты файла

Ниже перечислены основные атрибуты файла, которые мы можем прочитать для файла. Обратите внимание, что некоторые атрибуты могут быть недоступны в определенных операционных системах, а возвращаемое значение будет зависеть от реализации JVM.

Мы можем получить исключение UnsupportedOperationException, если атрибут указанного типа не поддерживается.

  • время создания
  • lastModifiedTime
  • lastAccessTime
  • isDirectory
  • isOther
  • isRegularFile
  • isSymbolicLink
  • размер
  • unix:uid

2. Использование Files.getAttribute()

Функция getAttributes() извлекает дату и время создания файла, используя имя атрибута файла creationTime.

Path filePath = Paths.get("c:/temp/data.txt");FileTime creationTime =(FileTime) Files.getAttribute(filePath, "creationTime");

3. Использование Files.readAttributes()

Метод readAttributes() считывает атрибуты файла как массовую операцию. Он принимает путь к файлу и тип класса атрибутов файла. Например,

  • BasicFileAttributes: представляет основные атрибуты, связанные с файлом в файловой системе.
  • DosFileAttributes: представляет атрибуты файла на таких платформах, как DOS и Samba.
  • PosixFileAttributes: представляет атрибуты файла в UNIX. POSIX поддерживает девять разрешений на доступ к файлу: разрешения на чтение, запись и выполнение для владельца файла, членов той же группы и «всех остальных».
BasicFileAttributes fileAttrs = Files.readAttributes(filePath, BasicFileAttributes.class);FileTime fileTime = fileAttrs.creationTime();

4. Преобразование в различные единицы времени

Мы можем использовать метод FileTime.to(TimeUnit) для преобразования времени создания файла в другое время, прошедшее с начала эпохи(1970-01-01T00:00:00Z).

long millis = creationTime.to(TimeUnit.MILLISECONDS);long days = creationTime.to(TimeUnit.DAYS);

Аналогично мы можем использовать единицы времени ЧАСЫ, МИНУТЫ, СЕКУНДЫ и МИКРОСЕКУНДЫ.

Для поддержки новых классов даты и времени Java 8 мы также можем преобразовать время создания в Instant.

Instant instant = creationTime.toInstant();

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

Этот урок Java научил нас получать время создания файла с помощью класса Files Java NIO и его методов. Эти API были введены в Java 7, поэтому до Java 6 не было прямого решения для получения временной метки создания.

Исходный код на Github

Прокрутить вверх