Время последнего доступа к любому файлу в Android
file.lastModified()
возвращает дату последнего изменения. Файл, похоже, не имеет метода для получения даты lastAccessed. Есть ли способ программно получить последний доступ к дате / времени любого файла в Android?
3 ответа
Вы можете получить последнее время доступа, используя stat
или же lstat
, Два метода, android.system.Os.stat(String path)
а также android.system.Os.lstat(String path)
, были обнародованы в Android 5.0. В предыдущих версиях Android вам нужно будет использовать отражение или запустить команду в оболочке.
Использование:
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.
Попробуй это:
javaxt.io.File file = new javaxt.io.File("file-path");
file.getLastAccessTime();
Последнее изменение ()
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();
}
}
}