Traiter des dossiers et des fichiers

cs_mervat Messages postés 90 Date d'inscription samedi 5 juin 2010 Statut Membre Dernière intervention 6 mars 2015 - 9 févr. 2011 à 14:24
cs_yvesmoundou Messages postés 3 Date d'inscription samedi 18 septembre 2010 Statut Membre Dernière intervention 23 mars 2011 - 23 mars 2011 à 15:14
bonjour,
je veux faire le meme traitement pour tous les fichiers d'un dossier,
mais le dossier d'entrée a lui meme des dossiers de fichiers,j'ai réussi à le faire, et j'ai eu comme résultat un dossier contenant tous les fichiers après traitement. mais ce que je veux c'est d'avoir un dossier contenant des dossiers de fichiers c'est à dire comme l'entrée.
voici un exemple pour mieux comprendre:
le dossier d'entrée "test" comporte deux dossiers "test1" et "test2" dont le premier comporte 4 fichiers et le deuxième 3 fichiers.
je veux avoir en sortie un dossier "test-sort" comportant deux dossier "test1" et "test2" dont le premier comporte ses 4 fichiers après traitement(voir code) et le deuxième ses 3 fichiers après traitement.
je veux aussi que si le dossier "test-sort" existe déja, l'effacer et le recréer ou bien vider l'ancien contenu pour mettre le nouveau contenu.

#include <fstream>
#include 
#include <string.h>
#include <sstream>
#include <dirent.h>

bool isValid(const std::string& path)
{
 return !path.empty() && path != "." && path != ".." ;
}

const std::string nomFichier(int i)
{
 std::ostringstream str;
 CreateDirectory ("test_sort", NULL);
 str << "test_sort\"<< "text" << i << ".txt";
 return str.str();
}

int main ()
{std::string ch, str="";
std::string ligne;
static const std::string folder = "test";
DIR* rep = opendir(folder.c_str());
if (rep)
 {
   struct dirent* lecture;
   int indexFichier = 0;

   while ((lecture = readdir(rep)))
  {
 if (!isValid(lecture->d_name))
 continue;
 std::ostringstream str;
 str << folder << "\"<< lecture->d_name;
 std::string folder1 = str.str();
 DIR* rep1 = opendir(folder1.c_str());
 if (rep1)
 {
  struct dirent* lecture1;

  while ((lecture1 = readdir(rep1)))
   {if (!isValid(lecture1->d_name))
continue;
std::ofstream out (nomFichier(++indexFichier).c_str(), std::ios::out);
out << "traitement" << std::endl;// ou n'importe quel traitement
   }

  closedir(rep1);
 }
  }
   closedir(rep);
 }
return 0;
}
 


je me suis bloqué ilya 2 jours mais envin, je pense qu'ilya un truc de récursivité, mais je suis nulle dans la récursivité donc j'ai pas su le faire, j'espère que vous pouvez m'aider à résoudre mon problème.
merci infiniment pour tous ceux qui m'aide.

1 réponse

cs_yvesmoundou Messages postés 3 Date d'inscription samedi 18 septembre 2010 Statut Membre Dernière intervention 23 mars 2011
23 mars 2011 à 15:14
la simulation [C] SIMULATION D'UN SGF UNIX est fausse svp envoyer le meilleur code on ne veut pas trop le fichier exe mais les code c l'essentiel yvesmoundou@yahoo.com
0
Rejoignez-nous