Получить accessTime файла - PullRequest
       39

Получить accessTime файла

0 голосов
/ 31 марта 2019

Мне нужен метод получения последнего доступа к (локальному) файлу в Android.

Я не имею в виду file.lastModified(), но последний раз, когда он открывался (просматривался в любомприложение устройства).У меня есть куча файлов, которые только просматриваются, но не изменяются, и я хочу удалить файлы, к которым был обращен последний раз, чтобы освободить место.

Я наткнулся на этот фрагмент кода используя java.nio.file пакет:

File file = //file from context.getExternalFilesDir(dirName)
BasicFileAttributes attr = Files.readAttributes(file.toPath(), 
BasicFileAttributes.class);
long accessedAt = attr.lastAccessTime().toMillis();
  • Может ли кто-нибудь подтвердить, что это действительно работает, и получить последний раз, когда к файлу обращались?

  • Достигается ли это даже в Android?

  • Этот код требует API уровня 26 и выше, есть ли способ сделать это с 21 <= <em>API level <26? </p>

1 Ответ

0 голосов
/ 06 апреля 2019

Как уже упоминалось здесь от CommonsWare , использование java.nio.file, android.system.Os или других встроенных библиотек для достижения моей цели не будет хорошо работать с будущим androidверсии.

Поэтому я использовал локальную базу данных (комната Android) для обработки доступа к файлам приложения (очевидно, только при доступе из моего собственного приложения).

В каждой строке есть столбцы long lastAccessTime и String filePath.Для каждого файла, к которому я обращался, я вставлял (если это первый раз) / обновлял свою запись с new Date().getTime().

При освобождении места я запрашивал те записи, упорядоченные по lastAccessTime ASC, поэтому самая старая будет первой,После удаления файла обновите соответствующую запись.

Этот подход стал возможным, поскольку все файлы были сохранены в выделенном каталоге (с использованием getExternalFilesDir ) и управлялись только моим приложением.

...