2009-05-28 2 views
12

Я знаю, что с использованием объекта File мы можем получить последнее модифицированное время для File (т. Е. File.lastModified()). Но, мое требование - получить последнее доступное время для File в Java. Как мне это получить?Получить время последнего доступа к файлу

+3

Имейте в виду, что эта информация ненадежна. Люди (включая меня) обычно отключают atime, поскольку это значительно ускоряет доступ к диску. Люди тоже делают это на серверах. – cletus

+0

Я второй cletus. Когда я купил накопитель SSD, я выключил atime на моем WinXP. Этот SSD не был хорош при случайной записи, и обновление последнего времени доступа приводило к смерти моего компьютера в других операциях, доступных только для чтения. –

ответ

12

Вам нужно будет использовать the new file I/O API (NIO2), который поставляется с Java 7. Он имеет способ lastAccessTime() для чтения последнего времени доступа.

Вот пример использования:

Path file = ... 
BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class); 
FileTime time = attrs.lastAccessTime(); 

Для получения дополнительной информации см Managing Metadata в Java Tutorial.

+0

Мне хотелось бы знать, как последнее время доступа к java 7. – randeepsp

+0

Java 7 запрашивает его из операционной системы, используя определенную функцию ОС. Это то, что вы хотели спросить? Я добавил пример того, как Java 7 можно * использовать *, чтобы получить время, если вы это имели в виду. –

+0

BasicFileAttributes не может быть разрешен. Я использую Java 1.8. Что может быть неправильным? –

4

Вы не можете сделать это с простым Java, вам нужно использовать JNI для доступа к платформе конкретных данных, таким как эта или использовать extensions to the core Java library как следующее:

javaxt.io.File file = new javaxt.io.File("path"); 
file.getLastAccessTime(); 

Или, если у вас есть Java 7, пойдите с ответом Эско и используйте NIO.