3 votes

Java a fixé la date d'accès au fichier

Existe-t-il un moyen en java de définir l'heure d'accès sans définir également l'heure de modification de la date ?

Il s'agira essentiellement d'une commande touch -a.

la méthode setLastModified dans File met à jour à la fois l'heure d'accès et la date de modification.

Nous utilisons actuellement java 6. Passer à 7 ne serait pas hors de question.

5voto

Joachim Sauer Points 133411

Vous pouvez utiliser Files.setAttribute() de Java 7 :

FileTime fileTime = FileTime.fromMillis(millis);
Files.setAttribute(path, "lastAccessTime", fileTime);

La chaîne "lastAccessTime" peut être trouvé dans la description de la BasicFileAttributeView qui fournit également une autre façon de définir cette propriété (avec l'option Files.getFileAttributeView() ):

Files.getFileAttributeView(path, BasicFileAttributeView.class).setTimes(null, fileTime, null);

Je n'ai pas connaissance d'une méthode purement Java qui fonctionne dans Java 6 ou antérieur.

1voto

JB Nizet Points 250258

Je suppose que l'ouverture d'un flux d'entrée sur le fichier devrait modifier son temps d'accès. Mais je ne connais pas d'API permettant de modifier directement cet attribut en Java 6.

0voto

Zammbi Points 2307

Il existe une API sun privée pour vérifier le temps d'accès à un fichier( Comment empêcher ShellFolder.getFolderColumns(...) de se planter souvent ? ), mais il n'y a aucun moyen de le définir d'après ce que j'ai trouvé. Cependant, le temps d'accès devrait être mis à jour à chaque fois que vous ouvrez le fichier, alors essayez peut-être de l'ouvrir en Java.

Vous pouvez vérifier si l'ancien projet JDIC dispose de cette option : http://javadesktop.org/articles/jdic/index.html

Ou cette bibliothèque : http://www.teamdev.com/jxfilewatcher/

Sinon, vous devrez peut-être rechercher la commande console pour les systèmes d'exploitation que vous souhaitez prendre en charge et l'appeler depuis Java.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X