0

我需要一种方法来获取最后一次在 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 <= API level < 26 吗?

4

1 回答 1

0

正如CommonsWare在这里提到的,使用 java.nio.file、android.system.Os 或其他内置库来实现我的目标将不适用于未来的 android 版本。

所以我最终使用本地数据库(android 房间)来处理对应用程序文件的访问(显然只有在从我自己的应用程序访问时)。

每行都有long lastAccessTimeString filePath列。
对于我插入的每个文件(如果是第一次)/用new Date().getTime().

释放空间时,我查询了按 排序的那些记录lastAccessTime ASC,所以最旧的将是第一个。删除文件后,更新相关记录。

这种方法是可行的,因为所有文件都存储在专用目录中(使用getExternalFilesDir)并且仅由我的应用程序管理。

于 2019-04-06T18:50:47.233 回答