Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RÉCUPÉRATION DES DATES D'UN FICHIER EN CLAIR


Description

Récupére la date de création, de modification et dernier acces d'un fichier
et converti les résultats en chaines de caractères complétement exploitable.
ce programme est déja autonome.
compilé et testé avec Borland c++ 5.5.
 

Source

  • #include <stdio>
  • using namespace std;
  • #include <windows>
  • #include <iostream>
  • //-----------------------------------------------------------------------
  • // Auteur : UKR6900
  • // Date début : 16/06/2006
  • // Date dernière MAJ : 16/06/2006
  • // Description : Exemple récupération des dates d'un fichier en clair
  • //------------------------------------------------------------------------
  • //------------------------------------------------------------------------------
  • // FONCTION : myGetFileTime
  • // DESCRIPTION : Retrouve les differentes dates d'un fichier et
  • // converti les temps en chaine
  • // VALEUR RETOUR : TRUE si succe, FALSE si echec
  • // PARAMETRES : hFile - handle de fichier valide
  • // lpszCreate - Pointer vers un buffer pour recevoir une chaine date creation
  • // lpszAccess - Pointer vers un buffer pour recevoir une chaine date dern.acce
  • // lpszWrite - Pointer vers un buffer pour recevoir une chaine date dern.modif.
  • //HANDLE hFile
  • //-------------------------------------------------------------------------------
  • BOOL myGetFileTime(const char * NameFile, LPTSTR lpszCreate,LPTSTR lpszAccess,LPTSTR lpszWrite){
  • FILETIME ftCreate, ftAccess, ftWrite;
  • SYSTEMTIME stUTC, stCreateLocal,stAccessLocal,stWriteLocal;
  • //opuverture du handle de fichier si existe
  • HANDLE hFile = CreateFile(NameFile,0,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,
  • OPEN_EXISTING,0,NULL);
  • if (hFile != INVALID_HANDLE_VALUE){
  • //Recupere les temps du fichier
  • if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
  • return FALSE;
  • else
  • CloseHandle(hFile);
  • //end if
  • }else
  • return FALSE;
  • //end if
  • //Converti le temp de creation en temp local
  • FileTimeToSystemTime(&ftCreate, &stUTC);
  • SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stCreateLocal);
  • //Converti le temp dern.acce en temp local.
  • FileTimeToSystemTime(&ftAccess, &stUTC);
  • SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stAccessLocal);
  • //Converti le temp dern.modif en temp local.
  • FileTimeToSystemTime(&ftWrite, &stUTC);
  • SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stWriteLocal);
  • //Construit les chaines pour montrer la date et le temp.
  • wsprintf(lpszCreate, TEXT("%02d/%02d/%d %02d:%02d"),
  • stCreateLocal.wMonth, stCreateLocal.wDay, stCreateLocal.wYear,
  • stCreateLocal.wHour, stCreateLocal.wMinute);
  • wsprintf(lpszAccess, TEXT("%02d/%02d/%d %02d:%02d"),
  • stAccessLocal.wMonth, stAccessLocal.wDay, stAccessLocal.wYear,
  • stAccessLocal.wHour, stAccessLocal.wMinute);
  • wsprintf(lpszWrite, TEXT("%02d/%02d/%d %02d:%02d"),
  • stWriteLocal.wMonth, stWriteLocal.wDay, stWriteLocal.wYear,
  • stWriteLocal.wHour, stWriteLocal.wMinute);
  • return TRUE;
  • }//end process
  • //------------------------------------------------------------------------------
  • // START PROGRAM TEST CLASS
  • //-------------------------------------------------------------------------------
  • void main(){
  • //allocation mémoire
  • char * strCreate = new char[20];
  • char * strLastAccess = new char[20];
  • char * strLastWrite = new char[20];
  • const char * NameF = "C:\\WINDOWS\\clock.avi";
  • //récupére les temps du fichier nomme
  • myGetFileTime(NameF,strCreate,strLastAccess,strLastWrite);
  • //Affiche les résultats
  • cout << "Cree le : " << strCreate << endl;
  • cout << "Modifie le : " << strLastWrite << endl;
  • cout << "Dernier acce le : " << strLastAccess << endl;
  • }
  • //------------------------------------------------------------------------------
  • // END PROGRAM TEST CLASS
  • //-------------------------------------------------------------------------------
  #include <stdio>
  using namespace std;
  #include <windows>
  #include <iostream>

//-----------------------------------------------------------------------
// Auteur            : UKR6900
// Date début        : 16/06/2006
// Date dernière MAJ : 16/06/2006
// Description       : Exemple récupération des dates d'un fichier en clair
//------------------------------------------------------------------------

//------------------------------------------------------------------------------
// FONCTION      : myGetFileTime
// DESCRIPTION   : Retrouve les differentes dates d'un fichier et 
//                 converti les temps en chaine
// VALEUR RETOUR : TRUE si succe, FALSE si echec
// PARAMETRES    : hFile      - handle de fichier valide
//                 lpszCreate - Pointer vers un buffer pour recevoir une chaine date creation
//                 lpszAccess - Pointer vers un buffer pour recevoir une chaine date dern.acce
//                 lpszWrite  - Pointer vers un buffer pour recevoir une chaine date dern.modif.
//HANDLE hFile
//-------------------------------------------------------------------------------
  BOOL myGetFileTime(const char * NameFile, LPTSTR lpszCreate,LPTSTR lpszAccess,LPTSTR lpszWrite){
    FILETIME ftCreate, ftAccess, ftWrite;
    SYSTEMTIME stUTC, stCreateLocal,stAccessLocal,stWriteLocal;

  //opuverture du handle de fichier si existe
    HANDLE hFile = CreateFile(NameFile,0,FILE_SHARE_READ | FILE_SHARE_WRITE,NULL,
                               OPEN_EXISTING,0,NULL);
    if (hFile != INVALID_HANDLE_VALUE){
    //Recupere les temps du fichier
      if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
         return FALSE;
       else
         CloseHandle(hFile);
      //end if
     }else 
        return FALSE;
    //end if

  //Converti le temp de creation en temp local
    FileTimeToSystemTime(&ftCreate, &stUTC);
    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stCreateLocal);

  //Converti le temp dern.acce en temp local.
    FileTimeToSystemTime(&ftAccess, &stUTC);
    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stAccessLocal);

  //Converti le temp dern.modif en temp local.
    FileTimeToSystemTime(&ftWrite, &stUTC);
    SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stWriteLocal);


  //Construit les chaines pour montrer la date et le temp.
    wsprintf(lpszCreate, TEXT("%02d/%02d/%d  %02d:%02d"),
             stCreateLocal.wMonth, stCreateLocal.wDay, stCreateLocal.wYear,
             stCreateLocal.wHour, stCreateLocal.wMinute);

    wsprintf(lpszAccess, TEXT("%02d/%02d/%d  %02d:%02d"),
             stAccessLocal.wMonth, stAccessLocal.wDay, stAccessLocal.wYear,
             stAccessLocal.wHour, stAccessLocal.wMinute);

    wsprintf(lpszWrite, TEXT("%02d/%02d/%d  %02d:%02d"),
             stWriteLocal.wMonth, stWriteLocal.wDay, stWriteLocal.wYear,
             stWriteLocal.wHour, stWriteLocal.wMinute);

    return TRUE;
  }//end process
//------------------------------------------------------------------------------
//                      START PROGRAM TEST CLASS
//-------------------------------------------------------------------------------
  void main(){

//allocation mémoire
  char * strCreate     = new char[20];
  char * strLastAccess = new char[20];
  char * strLastWrite  = new char[20];
  const char * NameF = "C:\\WINDOWS\\clock.avi";
//récupére les temps du fichier nomme
  myGetFileTime(NameF,strCreate,strLastAccess,strLastWrite);

//Affiche les résultats
  cout << "Cree le         : " << strCreate << endl;
  cout << "Modifie le      : " << strLastWrite << endl;
  cout << "Dernier acce le : " << strLastAccess << endl;

  }
//------------------------------------------------------------------------------
//                      END PROGRAM TEST CLASS
//-------------------------------------------------------------------------------

Conclusion

Basé sur les documentations MSDN de microsoft
Amélioré pour cet exemple.
 

Commentaires et avis

signaler à un administrateur
Commentaire de BruNews le 16/09/2006 16:59:36 administrateur CS

if(hFile != INVALID_HANDLE_VALUE)
{
  if(!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite)) return FALSE;
  else CloseHandle(hFile);
}
else return FALSE;

Tu ne fermes pas hFile à tout coup, il faudrait pourtant.

Rien de tel que la simplicité:
if(hFile == INVALID_HANDLE_VALUE) return FALSE;
BOOL bok = GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite);
CloseHandle(hFile);
if(!bok) return FALSE;
etc....

signaler à un administrateur
Commentaire de Joky le 18/09/2006 15:43:28

Tu alloues avec new alors que tu connais déjà la taille que tu souhaites allouée, donc d'une aucun intérêt et en plus, tu oublies de désallouer...
Autant déclarer tes chaînes de caractère sur le tas, surtout pour si peu

signaler à un administrateur
Commentaire de rosco91 le 30/05/2007 13:36:29

j'ai essayé de compiler ton programme avec devC/C++ et il ne fonctionne pas. J'ai un petit problème avec le type "BOOL". J'aimerai savoir comment le déclarer. stp

Merci d'avance..

signaler à un administrateur
Commentaire de Renfield le 30/05/2007 13:46:51 administrateur CS

pas de soucis, normallement, si tu inclus bien windows.h

windows.h => windef.h =>
typedef int                 BOOL;

signaler à un administrateur
Commentaire de rosco91 le 30/05/2007 13:50:13

Oui cela fonctionne!!! Merci. Mais il faut aussi changer #include<stdlib>
en #include<stdlib.h>. Voila tout et merci encore une fois Renfield pour ton information.

signaler à un administrateur
Commentaire de rosco91 le 30/05/2007 13:54:59

Oh! j'allais oublié. Ce code permet-il de lire récupération de la date d'un fichier texte? Parce que c'est ce que j'aurais aimé pouvoir faire.
Merci d'avance..

signaler à un administrateur
Commentaire de BruNews le 30/05/2007 14:27:23 administrateur CS

Il n'y a pas plus de fichier "texte" qu'autre chose.
Un fichier est une série d'octets et rien de plus.

signaler à un administrateur
Commentaire de Renfield le 30/05/2007 14:28:54 administrateur CS

l'API est pas sectaire, et récupère l'info de tous types de fichiers...

signaler à un administrateur
Commentaire de rosco91 le 30/05/2007 14:29:51

OUI OUI excuse moi, mauvaise question posée!

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.