[Débutant] FindFirstFile, FindNextFile, FindClose récursif
Salut !
j'essaye de lister tous les fichiers d'un repertoire et de ces sous-repertoire
j'imagine que ce sujet a dù etre traiter plusieurs fois dans ce forum
et je m'en excuse, j'ai pas trouver, ce topic si il existe
j'ai piquer du code ici et là nottament dans la FAQ C, ca liste trés bien
un répertoire mais pour les sous-répertoire ca marche pas
nottament quand j'essaye de faire un appel récursif
je travail avec Dev-C++ sous Windows xp :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| #include <iostream>
#include <windows.h>
using namespace std;
bool lister(char* pszMask)
{
WIN32_FIND_DATA File;
HANDLE hSearch;
BOOL bFindNextFile; //vrai si il ya un fichier ou un repertoire suivant
hSearch = FindFirstFile(pszMask, &File);
if(hSearch == INVALID_HANDLE_VALUE){
return FALSE;
}
// Partie qui retourne le répertoire courant dans BufCurDir
TCHAR BufCurDir[MAX_PATH];
DWORD dwRet;
dwRet = GetCurrentDirectory(MAX_PATH, BufCurDir);
//------
bFindNextFile = TRUE;
do {
if (File.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
{
// Traite les Repertoires
if(File.cFileName[0] != '.') // ne traite pas "." et ".."
{
SetCurrentDirectory(File.cFileName);
lister(pszMask); //<--------------- je me plante ici
//cout << BufCurDir << '\\' << File.cFileName << endl;
}
}
else
{
// Traite les Fichiers
cout << BufCurDir << '\\' << File.cFileName << endl;
}
bFindNextFile = FindNextFile(hSearch, &File);
} while(bFindNextFile); //tantqu'il existe un fichier ou répertoire suivant
FindClose(hSearch);
return TRUE;
}
int main(int argc, char *argv[])
{
lister("*");
system("PAUSE");
return EXIT_SUCCESS;
} |
Voila si quelqu'un pouvais m'aider comme d'hab ce serai super sympa :wink: