2009-12-21 14 views
6

Voglio un pezzo di funzione che richiederà un file e durerà quanti giorni, se fosse più vecchio di quella data, restituirà 0 altrimenti 1 ... Qualcosa del genere ...Ottieni file Ultima modifica ora e confronta

Ad esempio:

int IsOlder(TCHAR *filename, int days) 
{ 

do operation. 

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

} 

E 'MS VC++ 6 per Windows. Grazie da ora!

risposta

12

Windows ha una funzione API chiamata GetFileTime() (doc on MSDN) prendendo un handle di file nel parametro e 3 FILETIME strutture ad essere riempito di informazioni aggiornate in tempo:

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

La struttura FILETIME è offuscato, utilizzare la funzione FileTimeToSystemTime() per tradurlo ad una struttura SYSTEMTIME che è il modo più semplice da usare:

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

quindi è possibile utilizzare i campi wYear, wMonth, ecc. Da confrontare con il numero di giorni.

2

GetFileTime ottiene le varie date rilevanti per un file. C'è un example.

È necessario recuperare l'ultimo tempo di scrittura e calcolare la differenza in giorni da lì. Poiché la funzione GetFileTime10 restituisce la struttura piuttosto ingombrante di FILETIME, probabilmente si desidera convertirla in tempo di sistema (struct SYSTEMTIME) con FileTimeToSystemTime.