Время последнего доступа к файлу на Android

Есть ли способ получить время последнего доступа для файла в Android. Я знаю, как это сделать с помощью пакета java nio.file, однако поддержка Android для java 7 очень ограничена и не включает пакет файлов. Меня не интересует lastModified, только lastAccessed, так как я хотел бы удалить самые старые прочитанные файлы.


person Beata    schedule 14.03.2014    source источник
comment
Если нет ничего другого, вы могли бы написать небольшую оболочку NDK вокруг stat(), однако ядро ​​​​может предоставить вам эту информацию только в том случае, если файловая система, в которой оно находится, действительно отслеживает ее, что может быть, а может и нет.   -  person Chris Stratton    schedule 14.03.2014
comment
Спасибо, но я считаю, что команда stat недоступна на Android.   -  person Beata    schedule 14.03.2014
comment
Возможно, это не так, но я говорил не о команде stat, а о системном вызове stat(), который определенно доступен. См., например, linuxmanpages.com/man2/stat.2.php, хотя бионическая библиотека Android определяет структуру в <sys/stat.h> по-другому, используя 64-битные типы и, по-видимому, фактически использует stat64() ядра.   -  person Chris Stratton    schedule 14.03.2014
comment
@ChrisStratton Можно ли сделать это через Java, используя Runtime.getRuntime().exec(...)? Возможно ли это с помощью root?   -  person android developer    schedule 03.07.2014
comment
@ChrisStratton - Удалось ли вам получить время последнего доступа к файлам в Android?   -  person Jaydev    schedule 25.05.2016
comment
Я объяснил, как это можно сделать для файловых систем, в которых существует информация, но у меня не было причин реализовывать это самому.   -  person Chris Stratton    schedule 25.05.2016


Ответы (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());}

Однако это работает только для вышеперечисленных API Lollipop.

Также обратите внимание, что st_atime возвращает время в секундах, а не в миллисекундах.

person Rashmi S    schedule 31.05.2016