【问题标题】:File last access time on AndroidAndroid 上的文件上次访问时间
【发布时间】:2016-05-31 22:23:57
【问题描述】:

有没有办法在 Android 中获取文件的 lastAccess 时间。我知道如何使用 java nio.file 包来做到这一点,但是,Android 对 java 7 的支持非常有限,并且不包括文件包。我对 lastModified 不感兴趣,只对 lastAccessed 感兴趣,因为我想删除最旧的读取​​文件。

【问题讨论】:

  • 如果没有别的,你可以在 stat() 周围写一个小的 NDK 包装器,但是内核只能在它所在的文件系统实际跟踪它的情况下给你这个信息,这可能是也可能不是案子。
  • 谢谢,但我相信 stat 命令在 Android 上不可用。
  • 它可能不是,但我不是在谈论 stat command 而是 stat() system call 绝对可用.例如,参见 linuxmanpages.com/man2/stat.2.php,尽管 Android 的仿生 libc 以不同的方式定义 <sys/stat.h> 中的结构,使用 64 位类型并且显然实际上使用了内核的 stat64()。
  • @ChrisStratton 是否可以通过 Java 使用 Runtime.getRuntime().exec(...) 来实现?是否可以使用root?
  • @ChrisStratton - 你能在 android 中获取文件的最后访问时间吗?

标签: android lastaccesstime


【解决方案1】:
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) {
            StructStat stat = null;
            try {
                stat = Os.stat("/sdcard/Pictures/abc.jpg"); // File path here
            } catch (ErrnoException e) {
                e.printStackTrace();
            }
          long  t2 = stat.st_atime *1000L;
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(t2);

            SimpleDateFormat formatter =  new SimpleDateFormat("dd-MM-yyyy hh-MM-ss");
            String formattedDate = formatter.format(calendar.getTime());}

这仅适用于上述 Lollipop API。

另请注意,st_atime 以秒而不是毫秒为单位返回时间。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多