Recuperer date de derniere modif d'un fichier

Signaler
Messages postés
13
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
25 juin 2003
-
Messages postés
83
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2010
-
bonjour pour mon stage on m'a demandé de creer une application qui recuperer les dates de derniere modif d'un fichier pour les comparer a la date actuelle. (pour verifier des sauvegardes si vous voulez tout savoir)

j'ai vu dans l'aide de visual studio qu'il existait une fonction lastwritetime() qui faisait ça mais j'avoue ne pas savoir du tout comment on s'en sert...ça doit pas etre compliquer mais c'est quand meme pas de mon niveau.

si qq'un pouvait m'aider, m'expliquer ou mieux me donne un code source recupererant par exemple la date de modif du fichier C:\toto.txt ça m'avancerait bien !!^^

merci d'avance.

10 réponses

Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

Messages postés
61
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
18 novembre 2005

moi non plus g pas compris comment utiliser la fonction lastwritetime(), mais c pas grave, g une autre solution :

#include <windows.h>
#include <time.h>
#include <sys\stat.h>

int main (void)
{
WIN32_FIND_DATA wData;
char NomFich[50], Chemin[100], etoiles[3], Rep[53], jour[3], mois[3], an[5], synthese[11];
int JourModif;
struct stat DataFich;
struct tm *Modif;

strcpy(Chemin, "D:\\test\");
strcpy(etoiles, "*.*");

strcpy(Rep, Chemin);
strcat(Rep, etoiles);

HANDLE listing;
listing = FindFirstFile(Rep, &wData);

while((FindNextFile(listing, &wData)))
{
memset(NomFich, 0, 50);
strcpy(NomFich, wData.cFileName);
if(strcmp(NomFich, "toto.txt") == 0)
{
strcat(Chemin, "toto.txt");
stat(Chemin, &DataFich);
Modif = localtime(&DataFich.st_mtime);

JourModif = Modif->tm_mday;
itoa(JourModif, jour, 10);
JourModif = Modif->tm_mon + 1;
itoa(JourModif, mois, 10);
JourModif = Modif->tm_year + 1900;
itoa(JourModif, an, 10);

strcpy(synthese, jour);
strcat(synthese, "/");
strcat(synthese, mois);
strcat(synthese, "/");
strcat(synthese, an);

MessageBox(NULL, synthese, "date de modif", MB_OK);
}
}
return 0;
}

c long, c compliqué, mais ca marche alors bon ...
Messages postés
252
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
1 mai 2005

regarde ce que je viens de mettre, c'est hyper simple!y'a rien a comprendre
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
#include <time.h>
#include <sys\stat.h>
Voila 2 include qui n'ont rien a faire dans du win32.
BruNews, ciao...
Messages postés
61
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
18 novembre 2005

impossible de compiler sans avec Dev-cpp 4.9.8
une explication ???
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
20
explication est simple, ne plus se servir de ce qui est declare dans ces h, win32 a tout ce qu'il faut en API.
BruNews, ciao...
Messages postés
13
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
25 juin 2003

oups desolé d'avoir fait le boulet sur ce coup (post sur 2 forums differents) mais j'suis pas habitué qu'on me reponde, j'ai fait le tour de pas mal de forum et niet que dalle.

Merci pour votre aide j'vais tester ça et j'vous dirais ^^

ThanK, See You Soon
Messages postés
13
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
25 juin 2003

CoOL ça marche yavait juste une ptite erreur toute bete
tu avais ecrit:
FileTimeToLocalFileTime( &fTimeRead, &fLocTime );
Alors que pour le "last_write_time" il faut:
FileTimeToLocalFileTime( &fTimeWrite, &fLocTime );

du coup mon code ressemble a ça:

#include "stdafx.h"
#include <windows.h>
#include <fstream>
#include "iostream"
#include <conio.h>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
SYSTEMTIME sysTime;
FILETIME fTimeCreat,fTimeAcce,fTimeWrite ,fLocTime;
HANDLE hFile;
char Filename[80];

cout<<"++++Last_Write_Time d'un Fichier++++";
cout<<"\nEntrez le nom du fichier: ";
cin>>Filename;
cout << endl;

// Ouvrir/créer un fichier. //avant: "C:/test2.txt"
hFile = CreateFile( Filename, GENERIC_READ | GENERIC_WRITE,0, NULL, OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL, NULL );

// Recupere l'heure du fichier
GetFileTime( hFile, &fTimeCreat, &fTimeAcce, &fTimeWrite);

// Convertir une heure de fichier UTC. en l'heure locale du fichier
FileTimeToLocalFileTime( &fTimeWrite, &fLocTime );

// convertir une structure FILETIME en la date/heure SYSTEM
FileTimeToSystemTime( &fLocTime, &sysTime );

cout << "Fichier" << Filename <<endl;
cout << "Jour : " << sysTime.wDay << "/" << sysTime.wMonth << "/" << sysTime.wYear << endl;
cout << "Heure: "<< sysTime.wHour << "h" << sysTime.wMinute << endl;

CloseHandle( hFile );
getch();
return 0;
}

j'ai peut etre mis des fichier include qui servent a rien d'ailleurs...
bon allez maintenant que je sais faire ça j'vais pouvoir vraiment avancer
objectif: recolter toute les dates de modif de fichier de sauvegarde et les comparer a la date du jour pour verifier que toutes les sauvergardes ont bien été effectué recement

See You SoON
Messages postés
83
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2010

oubadji

je connes deux fonction qui permet de requeperer la date de dernier modiffication en c++ Buld c'est FileAge(file) ; et FileGetDat(File) ;c'est trés outile c'est 2 fonction et meme tu peux utiliser FileGetAttr(file);FileSetAtt(),
Messages postés
83
Date d'inscription
lundi 5 mai 2003
Statut
Membre
Dernière intervention
9 décembre 2010

oubadji