我需要一种方法来获取最后一次在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();
正如here提到的CommonsWare,使用java.nio.file,android.system.Os或其他内置库来实现我的目标将无法与未来的Android版本一起使用。
所以我最终使用本地数据库(android room)来处理对应用程序文件的访问(仅在从我自己的应用程序访问时)。
每行都有long lastAccessTime
和String filePath
列。
对于我插入的每个文件(如果是第一次)/使用new Date().getTime()
更新其记录。
在释放空间时,我查询lastAccessTime ASC
订购的那些记录,所以最老的将是第一个。删除文件后,更新相关记录。
这种方法是可行的,因为所有文件都存储在专用目录中(使用getExternalFilesDir),并且只能由我的应用程序管理。