2009-05-28 10 views
12

Sé que utilizando el objeto File podemos obtener la última hora modificada para un File (es decir, File.lastModified()). Pero, mi requisito es obtener el último tiempo de acceso para un File en Java. ¿Como lo consigo?Obtener el último tiempo de acceso para un archivo

+3

Tenga en cuenta que esta información no es confiable. Las personas (yo incluido) suelen desconectarse a tiempo ya que acelera enormemente el acceso al disco. La gente lo hace en servidores también. – cletus

+0

Voy a segundo cletus. Apagué Atime en mi WinXP apagado cuando compré un disco SSD. Esa SSD no era buena con escrituras aleatorias, y la actualización de los últimos tiempos de acceso estaba matando a mi máquina en operaciones de solo lectura. –

Respuesta

12

Deberá usar the new file I/O API (NIO2) que viene con Java 7. Tiene un método lastAccessTime() para leer la última hora de acceso.

Aquí está un ejemplo de uso:

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

Para más información ver Managing Metadata en el Tutorial de Java.

+0

me gustaría saber cómo java 7 obtiene la última hora accedida. – randeepsp

+0

Java 7 lo solicita desde el sistema operativo, utilizando alguna función específica del sistema operativo. ¿Es eso lo que querías preguntar? He agregado un ejemplo de cómo se puede * usar * Java 7 para obtener el tiempo, en caso de que en lugar de eso quieras decir eso. –

+0

Los BasicFileAttributes no se pueden resolver. Estoy usando Java 1.8. ¿Qué podría estar mal? –

4

No puede hacerlo con llanura de Java, se tendrá que utilizar JNI para acceder a los datos específicos de la plataforma como tal o utilizar extensions to the core Java library como la siguiente:

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

O, si usted tiene Java 7, ve con la respuesta de Esko y usa NIO.

Cuestiones relacionadas