【问题标题】:Get accessTime of a file获取文件的访问时间
【发布时间】:2019-03-31 17:15:52
【问题描述】:

我需要一种方法来获取最后一次在 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 级别

【问题讨论】:

  • 请记住,Google 正在消除 Android Q 中的大多数文件系统访问权限,因此您的应用将无法长期运行。
  • 那是个坏消息。感谢您的澄清
  • 我会检查一下,谢谢@fancyjyl

标签: android android-file lastaccesstime


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-20
    • 1970-01-01
    • 2011-01-20
    相关资源
    最近更新 更多