我需要一种获取上次在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是什么办法?
答案 0 :(得分:0)
here提到CommonsWare,使用java.nio.file,android.system.Os或其他内置库来实现我的目标,在以后的android版本中将无法正常工作。
因此,我最终使用了本地数据库(android room)来处理对应用程序文件的访问(显然仅当从我自己的应用程序访问时)。
每行都有long lastAccessTime
和String filePath
列。
对于插入的每个文件,我都会插入(如果是第一次)/使用new Date().getTime()
更新其记录。
释放空间时,我查询了lastAccessTime ASC
排序的那些记录,因此最早的记录将排在最前面。删除文件后,更新相关记录。
之所以可以采用这种方法,是因为所有文件都存储在专用目录中(使用getExternalFilesDir),并且仅由我的应用程序管理。