2010-09-22 3 views

Répondre

3

Vous pouvez énumérer tous les fichiers dans un répertoire à l'aide FindFirstFile et FindNextFile (et ne pas oublier d'appeler FindClose lorsque vous avez terminé). Vous pouvez passer un filtre à ces fonctions pour rechercher uniquement certains noms de fichiers, par ex. directory\*.log.

Lorsque vous énumérez les fichiers, la structure WIN32_FIND_DATA qui vous est renvoyée vous indique le nom de fichier et les attributs de chaque fichier (entre autres). Pour chaque fichier, vérifiez les attributs du fichier pour vous assurer qu'il s'agit d'un fichier normal en vérifiant qu'il porte l'indicateur FILE_ATTRIBUTE_NORMAL pour ignorer les répertoires.

Par exemple:

WIN32_FIND_DATA fileInfo; 
HANDLE hFind = FindFirstFile("C:\\directory\\to\\search\\*.log", &fileInfo); 
if(hFind == INVALID_HANDLE_VALUE) 
    ; // handle error 
else 
{ 
    do 
    { 
     if(fileInfo.dwFileAttributes & FILE_ATTRIBUTE_NORMAL) 
     { 
      printf("Found a .log file: %s\n", fileInfo.cFileName); 
     } 
    } while(FindNextFile(hFind, &fileInfo)); 
    if(GetLastError() != ERROR_NO_MORE_FILES) 
     ; // handle error 
    FindClose(hFind); 
} 
+0

Les fonctions permettent de trouver spécifier un masque/filtre, de sorte que vous ne même pas besoin de vérifier l'extension, il suffit de passer « * .log » à FindFirstFile – Necrolis

+0

@Necrolis: Bon point, j'ai mis à jour ma réponse et ajouté un exemple de code. –

Questions connexes