Compter les fichiers d'un répertoire

cs_bipbip83 Messages postés 5 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 12 avril 2005 - 9 avril 2005 à 23:41
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 11 avril 2005 à 00:56
Bonsoir,

Je cherche à compter le nombre de fichiers contenu dans un répertoire, j'ai lu pas mal de truc la dessus sur les forums, mais les codes donnés sont trop complexes pour moi;
J'utilise C++ builder, je me suis rendu compte que pour réaliser ça je devais utiliser FindFirst, FindNext; l'aide de Builder m'a permis d'écrire qqchose du style:

TSearchRec sr; int N=0; // N sera le nombre de fichiers dans "repertoire"
if (FindFirst("repertoire",faAnyFile,sr)==0)
{
do
{
N=N+1;
} while(FindNext(sr) == 0);
FindClose(sr);
}
malheureusement pour moi, la valeur de N est toujours 1 à la fin du if et ce n'est pas la valeur attendue

Pourriez vous me donner un ptit coup de main? qu's qui ne va pas? je précise que je ne suis pas franchement sur de comprendre ce que font FindFirst et FindNext.

Peut être y a t'il une méthode plus simple pour ce calcul? Ou peut être que les choses ne sont pas si simples?

Merci pour votre aide

3 réponses

NitRic Messages postés 402 Date d'inscription mardi 1 mai 2001 Statut Membre Dernière intervention 15 août 2011
10 avril 2005 à 01:03
Non en effet, ce n'est pas aussi simple. Ton exemple permet seulement
de compter le nombre de fichier/dossier dans un répertoire sans aller
dans les sous-répertoires ... Il existes des tonnes d'exemples sur ce
site pour faire ce genre de chose, si tu cherche juste un p'tit peu tu
vas tous les trouver ...




~(.:: NitRic ::.)~
0
cs_bipbip83 Messages postés 5 Date d'inscription samedi 9 avril 2005 Statut Membre Dernière intervention 12 avril 2005
10 avril 2005 à 11:51
D'abord merci de ta réponse,
seulement je n'ai pas besoin de lister les sous répertoires ; je connais l'arborescence et je n'ai besoin (pour l'instant) que d'avoir accès aux fichier d'un répertoire ( qui ne contient pas de sous-répertoire) ; la fonction que j'ai écrite plus haut ne fonctionne pas telle qu'elle apparemment....
Sur le site, il y a effectivement beaucoup de sujet qui ressemble à celui là, à ceci près que mon problème est plus simple : je ne liste pas les sous-répertoires, je ne cherche pas à obtenir les noms des fichiers ; je veux juste les compter et mettre ce nombre dans N; c tout...
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
11 avril 2005 à 00:56
Je présume strlen(pszdir) <= 295 sinon tu ajoutes controle de longueur.

int CompteFichiers(char *pszDir)
{
WIN32_FIND_DATA wfd;
HANDLE hfl;
int count = 0;
char buf[300], *c, *d; c pszDir; d buf;
while(*d = *c) {d++; c++;}
if(d == buf) return 0; if(*(d-1) !'\\') *d++ '\\'; *d++ '*'; *d++ '.'; *d++ = '*'; *d = 0;
hfl = FindFirstFile(buf, &wfd);
if(hfl == INVALID_HANDLE_VALUE) return 0;
do {
if(wfd.cFileName[0] != '.') count++;
} while(FindNextFile(hfl, &wfd));
FindClose(hfl);
return count;
}

ciao...
BruNews, MVP VC++
0
Rejoignez-nous