begin process at 2012 02 05 05:50:37
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

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

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.


 Sources du même auteur

GESTION DES SERVICES WINDOWS PAR LES API DANS UNE CLASSE
GESTION BASE DE REGISTRE (LOCAL OU DISTANTE)AVEC DES FONCTIO...
Source avec Zip CRÉATION D'UNE CLASSE CL_STRING (GESTION DES CHAÎNES)
GESTION D'UN ARBRE BINAIRE PAR LES CLASSES
GESTION D'UNE FILE PAR LES CLASSES

 Sources de la même categorie

DATETIMECONVERTER par guill76
Source avec Zip CLASSE DE DATE LOCALISÉE (20 LANGUES) par exar
Source avec Zip CLASSE MOMENT V2.0 par le_duche
CALCUL DATE DE PAQUES (DATE MOBILE) par steph12358
Source avec une capture VACCATION (AVEC FONCTION) CONSOLERIE, REMIX GCC par sebman

Commentaires et avis

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....

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

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..

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;

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.

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..

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.

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...

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,309 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales