获取文件的accessTime

问题描述 投票:0回答:1

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

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

我使用this piece of code包偶然发现了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级别<26时是否有任何方法可以这样做?
android android-file lastaccesstime
1个回答
0
投票

正如here提到的CommonsWare,使用java.nio.file,android.system.Os或其他内置库来实现我的目标将无法与未来的Android版本一起使用。

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

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

在释放空间时,我查询lastAccessTime ASC订购的那些记录,所以最老的将是第一个。删除文件后,更新相关记录。

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

© www.soinside.com 2019 - 2024. All rights reserved.