file.lastModified()
返回上次修改日期。 File似乎没有任何方法来获取lastAccessed日期。有没有办法以编程方式获取android中任何文件的上次访问日期/时间?
答案 0 :(得分:15)
您可以使用stat
或lstat
获取上次访问时间。这两种方法android.system.Os.stat(String path)
和android.system.Os.lstat(String path)
在Android 5.0中公开。在以前的Android版本中,您需要使用反射或在shell中运行命令。
Android 5.0 +
long lastAccessTime = Os.lstat(file.getAbsolutePath()).st_atime;
在Android 5.0之前使用反射
Class<?> clazz = Class.forName("libcore.io.Libcore");
Field field = clazz.getDeclaredField("os");
if (!field.isAccessible()) {
field.setAccessible(true);
}
Object os = field.get(null);
Method method = os.getClass().getMethod("lstat", String.class);
Object lstat = method.invoke(os, file.getAbsolutePath());
field = lstat.getClass().getDeclaredField("st_atime");
if (!field.isAccessible()) {
field.setAccessible(true);
}
long lastAccessTime = field.getLong(lstat);
我不认为在Android上使用上次访问时间。来自java.nio
文档:
如果文件系统实现不支持时间戳来指示上次访问的时间,则此方法返回特定于实现的默认值,通常是最后修改时间或表示时间的FileTime(1970-01-01T00 :00:00Z)
。
我测试了使用以下命令更改上次访问时间:
touch -a [PATH]
这确实改变了以root用户身份运行命令时的上次访问时间。但是,我不认为上次访问的时间会在Android上更新/使用。
答案 1 :(得分:0)
试试这个:
javaxt.io.File file = new javaxt.io.File("file-path");
file.getLastAccessTime();
答案 2 :(得分:-1)
lastModified()
import java.io.File;
import java.util.Date;
public class FileExample {
public static void main(String[] args) {
File f = null;
String path;
long millisec;
boolean bool = false;
try{
f = new File("c:/demo.txt");
bool = f.exists();
if(bool)
{
millisec = f.lastModified();
// date and time
Date dt = new Date(millisec);
// path
path = f.getPath();
System.out.print(path+" last modified at: "+dt);
}
}catch(Exception e){
e.printStackTrace();
}
}
}