2009-05-28 4 views
12

Je sais qu'en utilisant l'objet File, nous pouvons obtenir la dernière date de modification pour un File (c'est-à-dire File.lastModified()). Mais, mon exigence est d'obtenir le dernier temps accédé pour un File en Java. Comment l'obtenir?Obtenir le dernier temps d'accès pour un fichier

+3

Les personnes (moi-même inclus) désactivent généralement le temps car cela accélère considérablement l'accès au disque. Les gens le font aussi sur des serveurs. – cletus

+0

Je vais seconder Cletus. J'ai éteint une fois sur mon WinXP quand j'ai acheté un lecteur SSD. Ce SSD n'était pas bon avec les écritures aléatoires, et la mise à jour des derniers temps d'accès était en train de tuer ma machine sur des opérations sinon en lecture seule. –

Répondre

12

Vous aurez besoin d'utiliser the new file I/O API (NIO2) qui est livré avec Java 7. Il a une méthode lastAccessTime() pour lire le dernier temps d'accès.

Voici un exemple d'utilisation:

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

Pour plus d'informations, voir Managing Metadata dans le Java Tutorial. Gardez à l'esprit que cette information n'est pas fiable.

+0

Je voudrais savoir comment java 7 obtient le dernier temps consulté. – randeepsp

+0

Java 7 le demande depuis le système d'exploitation, en utilisant une fonction spécifique du système d'exploitation. Est-ce ce que vous vouliez demander? J'ai ajouté un exemple de la façon dont Java 7 peut être * utilisé * pour avoir le temps, au cas où vous le vouliez. –

+0

BasicFileAttributes ne peut pas être résolu. J'utilise Java 1.8. Quel pourrait être le problème? –

4

Vous ne pouvez pas le faire avec Java ordinaire, vous aurez besoin d'utiliser JNI à des données spécifiques accéder à la plate-forme comme celle-ci ou utiliser extensions to the core Java library comme ce qui suit:

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

Ou, si vous avez Java 7, allez avec la réponse d'Esko et utilisez NIO.

Questions connexes