[C++] Parcours de fichiers dans un répertoire

Fermé
Fom - 22 mai 2005 à 19:20
blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 - 22 mai 2005 à 21:33
Bonjour à toutes et à tous,
Voila mon petit problème : j'aimerai, pour un path donné (c'est un répertoire), parcourir le contenu de ce répertoire et pouvoir sélectionner tous les sous-répertoires contenus dans le répertoire de base. Mon but étant d'explorer l'arborescence des répertoires à partir du path d'origine (parcours en préordre...).

Je code en C++ et j'ai essayé avec la méthode FindFirst, GetCurrentDir et encore d'autre et je n'arrive à rien. Quelqu'un aurait-il une petite idée pour moi?

Un grand merci d'avance!
salutations.
Fom
A voir également:

1 réponse

blurk Messages postés 486 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 15 mars 2009 160
22 mai 2005 à 21:33
salut,

voilà une fonction qui copie un repertoire et toute son arborescence
fichiers compris vers un autre répertoire,
comme la commande msdos xcopy, mais c'est une vieille histoire
avec quelques retouches ce qui suit devrait t'être utile

cordialement

#include <stdio.h>
#include <dir.h>

void  copydir(char *repsource, char *repcible);
void  copyfile(char *Fsource,char *Fcible);

void  copydir(char *repsource, char *repcible)
{
char nomfic[256],search[256];
char fichiersource[256],fichiercible[256];
struct ffblk ffblk;
strcpy(search,repsource);
strcat(search,"\\*");
int done;
int nbfic=0;
   while (true)
   {
      if(!nbfic)
        {done = findfirst(search,&ffblk,FA_RDONLY + FA_DIREC);}
      else
        {done = findnext(&ffblk);}
      if (done) break;
      strcpy(nomfic,ffblk.ff_name);
      strcpy (fichiersource,repsource);      strcat (fichiersource,"\\");
      strcat (fichiersource,nomfic);
      strcpy (fichiercible,repcible);      strcat (fichiercible,"\\");
      strcat (fichiercible,nomfic);
      if(ffblk.ff_attrib &  FA_DIREC)
        {
        int i;
        for(i=strlen(fichiersource);i>0 && fichiersource[i]!='\\';--i);
        if(fichiersource[i+1]!='.') // ne pas copier les dosiers parents
          {
          mkdir(fichiercible);
          copydir(fichiersource,fichiercible);
         // recursif pour sous repertoires
          }
        }
      else
        {
        copyfile(fichiersource,fichiercible);
        }
      nbfic++;
   }

}

// copier un fichier et choisir de le renomer
void  copyfile(char *Fsource,char *Fcible)
{
FILE *source, *cible;
source =fopen(Fsource,"rb");
cible =fopen(Fcible,"wb");

while(true)
  {
  register c=fgetc(source);
  if(feof(source))break;
  fputc(c,cible);
  }

fclose(cible);
fclose(source);
}

5