获取文件的访问时间

时间:2019-03-31 17:15:52

标签: android android-file lastaccesstime

我需要一种获取上次在android中访问(本地)文件的方法。

我并不是说file.lastModified(),而是最后一次打开它(在设备的任何应用中查看)。
我有一堆文件只能查看,不能修改,我想删除最长时间前访问过的文件以释放空间。

我使用java.nio.file包偶然发现了this piece of code

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级别 <26是什么办法?

1 个答案:

答案 0 :(得分:0)

here提到CommonsWare,使用java.nio.file,android.system.Os或其他内置库来实现我的目标,在以后的android版本中将无法正常工作。

因此,我最终使用了本地数据库(android room)来处理对应用程序文件的访问(显然仅当从我自己的应用程序访问时)。

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

释放空间时,我查询了lastAccessTime ASC排序的那些记录,因此最早的记录将排在最前面。删除文件后,更新相关记录。

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