Date de création d'un fichier texte [Résolu]

Messages postés
11
Date d'inscription
dimanche 27 janvier 2008
Dernière intervention
28 janvier 2011
- - Dernière réponse : zahenianis
Messages postés
11
Date d'inscription
dimanche 27 janvier 2008
Dernière intervention
28 janvier 2011
- 27 avril 2010 à 17:25
salut,
j'arrive pas à trouver la fonction qui me donne la date de création d'un fichier texte . J'ai regardé la classe File mais rien ne répond à mon besoin.
Merci d'avance pour celui ou celle qui va me répondre.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
11
Date d'inscription
dimanche 27 janvier 2008
Dernière intervention
28 janvier 2011
3
Merci
Au fait il est possible d'invoquer une méthode de windows dans un prg java et qui donne la date de création d'un fichier sauf que c'est pas portable.

//voici le code de la classe toute prête qui va faire le travail

import com.sun.jna.Pointer;
import com.sun.jna.Native;
import com.sun.jna.Structure;
import com.sun.jna.win32.StdCallLibrary;
import java.io.File;
import java.util.Calendar;


public class JNATime {

public interface Kernel32 extends StdCallLibrary {
/** constante pour CreateFileA */
public int FILE_SHARE_READ = 0x01;
/** constante pour CreateFileA */
public int OPEN_EXISTING = 3;

/** obtention d'un Handler sur un fichier */
Pointer CreateFileA(
String path,
int dwDesiredAccess,
int dwSharedMode,
Pointer lpSecurityAttr,
int dwCreationDisposition,
int dwFlagsAndAttributes,
Pointer hTemplateFile
);

/** copie dans les 3 pointeurs FILETIME les dates du fichier hFile */
boolean GetFileTime(Pointer hFile,
FILETIME lpCreationTime,
FILETIME lpLastAccessTime,
FILETIME lpLastWriteTime);

/** convertit une date windows en une structure plus lisible */
boolean FileTimeToSystemTime(
FILETIME lpFileTime,
SYSTEMTIME lpSystemTime);


/** récupération de la dernière erreur */
int GetLastError();

/** instanciation de la library */
public Kernel32 INSTANCE = (Kernel32)Native.loadLibrary("kernel32", Kernel32.class);
}

/** structure contenant une date sous forme de long au format windows */
public static class FILETIME extends Structure {
public int dwLowDateTime;
public int dwHighDateTime;
}

/** structure éclatée d'une date */
public static class SYSTEMTIME extends Structure {
public short wYear;
public short wMonth;
public short wDayOfWeek;
public short wDay;
public short wHour;
public short wMinute;
public short wSecond;
public short wMilliseconds;

//}
public long getTime() {
Calendar c = Calendar.getInstance();
c.set(wYear, wMonth-1, wDay, wHour, wMinute, wSecond);
c.set(Calendar.MILLISECOND, wMilliseconds);
return c.getTimeInMillis();
}
}
/** obtention de la date de création du fichier fourni en path */
public static long getCreationDate(String path) {

File pathFile = new File(path);
if(pathFile.isFile()){
Kernel32 lib = Kernel32.INSTANCE;

//récupération d'un handle sur le fichier
Pointer hFile = lib.CreateFileA(
path,
0,
Kernel32.FILE_SHARE_READ,
null,
Kernel32.OPEN_EXISTING,
0,
null);

int error = lib.GetLastError();
if (error!=0) {
throw new IllegalArgumentException("k32 error : "+error);
}

FILETIME crea = new FILETIME();

//récupération des dates du fichier
boolean res = lib.GetFileTime(hFile,crea,null,null);
if (!res) {
error = lib.GetLastError();
throw new IllegalArgumentException("k32 error : GetFileTime failed "+error);
}

SYSTEMTIME creasys = new SYSTEMTIME();

//conversion en une structure de date utilisable
//à noter que l'heure ne varie pas avec l'horaire hiver/été
res = lib.FileTimeToSystemTime(crea, creasys);
if (!res) {
error = lib.GetLastError();
throw new IllegalArgumentException("k32 error : FileTimeToSystemTime failed "+error);
}

return creasys.getTime();

} return 0;
}
}

//cool non ?

//Et là c'est un exemple d'appel de cette classe :

//Date de création
String getDateCreation(nomFichier) //simple méthode
{
long d = JNATime.getCreationDate(nomFichier.getPath());
Date date = new Date(d);
DateFormat frm = DateFormat.getDateTimeInstance();
return (frm.format(date));//retourne la date de création

}

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 95 internautes nous ont dit merci ce mois-ci

Commenter la réponse de zahenianis
Messages postés
110
Date d'inscription
mercredi 28 mars 2007
Dernière intervention
28 août 2012
0
Merci
Salut,

Il n'est, à ma connaissance, pas possible de connaître la date de création d'un fichier en Java, à cause de problèmes de portabilité. La seule info à récupérer peut être la date de dernière modification avec la méthode lastModified().

A +

amundain

Java bien,merci.
Commenter la réponse de amundain

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.