如何在不使用BasicFileAttribute类的情况下获取Android中任何文件的上次访问时间

时间:2016-07-18 10:49:49

标签: java android time access

我想要一个class,它将成为Android应用程序的一部分,可直接向我提供图像,视频等任何文件的最后打开状态或上次访问状态。 BasicFileAttribute.class似乎不适合我。解决方案需要使用JDK 8.我不想使用JDK 7.

1 个答案:

答案 0 :(得分:0)

您可以使用Os.stat - 从api 21开始,它会返回StructStat,其中包含字段st_atime和上次访问时间(以秒为单位)。例如:

if (Build.VERSION.SDK_INT >= 21) {
   try {
      StructStat stat = Os.stat("/path/to/my/file");
      if (stat.st_atime != 0) {
           // stat.st_atime contains last access time, seconds since epoch
      }
   } catch (Exception e) {
      // deal with exception
   }
}

其他解决方案是执行shell命令stat

Process p = Runtime.getRuntime().exec("stat -c \"%X\" /path/to/file");
p.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(
  p.getInputStream()));
String line = reader.readLine();
long time_sec = 0;
if (!TextUtils.isEmpty())
 time_sec = Long.parseLong(line);

我没有测试过上面的代码 - 但它看起来应该可以正常工作。

第三个方法是使用NDK并从C或C ++调用stat函数。