3 votes

"Date du dernier accès et date de la dernière modification du fichier en java (Windows)

J'ai un ensemble de fichiers sur mon répertoire Windows qui sont copiés d'ailleurs. En vérifiant les propriétés de l'un de ces fichiers (clic droit -> Propriétés), il apparaît :

Créé : Aujourd'hui, 11 février 2013, 2:51:56 PM

Modifié : Mardi, 01 janvier 2013, 8:30:04 AM

Accédé : Aujourd'hui, 11 février 2013, 14:51:56 PM

Les champs "Created" et "Accessed" indiquent essentiellement l'heure à laquelle le fichier a été effectivement copié dans le nouveau répertoire, tandis que le champ "Modified" indique la date de modification du fichier d'origine.

En Java, en utilisant file.lastModified() Je n'obtiens que l'horodatage "Accessed" (ou "Created"). Existe-t-il un moyen d'obtenir la valeur "Modified" du fichier d'origine ?

3voto

Recontemplator Points 56

En plus d'utiliser une bibliothèque "externe" (comme JavaXT) dans Java 7, vous pouvez également utiliser la nouvelle API de fichier (consultez cette page). Tutoriel Java 7 nio.2 ).

File attribFile = new File("/tmp/file.txt");
Path attribPath = attribFile.toPath();
BasicFileAttributeView basicView =
    attribPath.getFileAttributeView(BasicFileAttributeView.class);
BasicFileAttributes basicAttribs = basicView.readAttributes();

System.out.println("Created: " + basicAttribs.creationTime());
System.out.println("Accessed: " + basicAttribs.lastAccessTime());
System.out.println("Modified: " + basicAttribs.lastModifiedTime());

Vérifiez cet article pour des échantillons supplémentaires.

2voto

mjuarez Points 1357

Vous pourriez ajouter cette bibliothèque JavaXT et vous pourrez alors faire quelque chose comme ceci :

javaxt.io.File file = new javaxt.io.File("/tmp/file.txt");
System.out.println("Created: " + file.getCreationTime());
System.out.println("Accessed: " + file.getLastAccessTime());
System.out.println("Modified: " + file.getLastModifiedTime());

0voto

Recontemplator Points 56

En ce qui concerne JavaXT, et Java 7 n'a pas fonctionné pour vous, vous pouvez essayer des approches plus exotiques, si vous êtes prêt à rester sur la plate-forme Windows uniquement. En ce qui concerne l'attribut de création de fichier, il n'existe pas sur la plupart des systèmes de fichiers *nix, ce n'est donc pas une grosse restriction.

1). pasre sortie de

    Runtime.getRuntime().exec("cmd /c dir c:\\logfile.log /tc");

exemple de travail aquí

2). Essayez une autre bibliothèque "externe". Par exemple FileTimes

3). Vous pouvez utiliser JNA pour gagner du temps en appelant directement les fonctions de l'API Windows. BTW, quand j'ai essayé de trouver un exemple de code avec JNA et les fonctions d'attributs de fichiers, j'ai trouvé cette question Votre question semble donc être un doublon :-)

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