2009-12-21 8 views
6

Je veux un morceau de fonction qui prendra un fichier et durera combien de jours, si elle était plus ancienne que cette date, retournera 0 sinon 1 ... Quelque chose comme ça ...Obtenir le fichier Dernière modification Heure et Comparer

par exemple:

int IsOlder(TCHAR *filename, int days) 
{ 

do operation. 

If last modify date was older than days variable 
return 0 
else 
return 1 

} 

Il est MS VC++ 6 pour Windows. Merci à partir de maintenant!

Répondre

12

Windows a une fonction API appelée GetFileTime() (doc on MSDN) prendre un descripteur de fichier dans le paramètre et 3 FILETIME structures à remplir avec des informations date-heure:

FILETIME creationTime, 
     lpLastAccessTime, 
     lastWriteTime; 
bool err = GetFileTime(h, &creationTime, &lpLastAccessTime, &lastWriteTime); 
if(!err) error 

La structure FILETIME est obscurcie, utilisez la fonction FileTimeToSystemTime() de traduire à une structure SYSTEMTIME qui est beaucoup plus facile à utiliser:

SYSTEMTIME systemTime; 
bool res = FileTimeToSystemTime(&creationTime, &systemTime); 
if(!res) error 

Ensuite, vous pouvez utiliser des champs wYear, wMonth, etc. à comparer avec votre nombre de jours.

2

GetFileTime obtient les différentes dates pertinentes pour un fichier. Il y a un example.

Vous devrez récupérer la dernière heure d'écriture et calculer la différence en jours à partir de là. Comme la fonction GetFileTime renvoie la structure peu maniable FILETIME, vous voulez probablement le convertir en heure système (struct SYSTEMTIME) avec FileTimeToSystemTime.

Questions connexes