2009-05-28 28 views
12

So che utilizzando l'oggetto File è possibile ottenere l'ora dell'ultima modifica per un File (ad esempio File.lastModified()). Ma il mio requisito è quello di ottenere l'ora di accesso per un File in Java. Come lo ottengo?Ottieni l'ultima ora di accesso per un file

+3

Tenere presente che questa informazione non è affidabile. Le persone (me compreso) di solito disattivano il tempo in quanto accelera notevolmente l'accesso al disco. Le persone lo fanno anche sui server. – cletus

+0

I'll second cleter. Ho disattivato il mio WinXP quando ho comprato un disco SSD. L'SSD non andava bene con le scritture casuali e l'aggiornamento degli ultimi tempi di accesso stava uccidendo la mia macchina in operazioni altrimenti di sola lettura. –

risposta

12

È necessario utilizzare the new file I/O API (NIO2) fornito con Java 7. Ha un metodo lastAccessTime() per la lettura dell'ultimo orario di accesso.

Ecco un esempio di utilizzo:

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

Per ulteriori informazioni vedere Managing Metadata nel Tutorial Java.

+0

mi piacerebbe sapere come java 7 ottiene l'ultima ora di accesso. – randeepsp

+0

Java 7 lo richiede dal sistema operativo, utilizzando alcune funzioni specifiche del sistema operativo. E 'questo quello che volevi chiedere? Ho aggiunto un esempio di come Java 7 può essere * usato * per ottenere il tempo, nel caso intendessi invece quello. –

+0

BasicFileAttributes non può essere risolto. Sto usando Java 1.8. Cosa potrebbe esserci di sbagliato? –

4

Non puoi farlo con pianura Java, avrete bisogno di usare JNI per accedere ai dati specifici della piattaforma di questo tipo o utilizzare extensions to the core Java library come la seguente:

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

Oppure, se si dispone di Java 7, vai con la risposta di Esko e usa NIO.

Problemi correlati