begin process at 2012 05 27 18:05:07
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > RECHERCHER UN TYPE DE FICHIER DANS TOUTE UNE ARBORESCENCE

RECHERCHER UN TYPE DE FICHIER DANS TOUTE UNE ARBORESCENCE


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Niveau :Initié Date de création :03/02/2004 Date de mise à jour :03/02/2004 22:04:58 Vu :6 271

Auteur : gege1024

Ecrire un message privé
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

c'est une fonction recursive qui parcours le répertoire et TOUS les sous-repertoires et stock tous les fichiers d'un meme type


mon code parcours une arborescence COMPLETE a partir d'un répertoire designé puis il recherche et ecrit dans un fichier ce qu'il a trouvé.
cet exemple est en rapport avec mon projet mais il est possible de modifier le type de fichier  (ex:".exe", "*.txt"...) et ce que le fichier doit ecrire

PS: c'est une appli MFCAppWizard (cf: AfxMessageBox...)


Source

  • int CBatch::Cherch_Fic_Rep(CString rep, CString nom)
  • {
  • rep = rep + "\\";
  • CString sous_repertoire = "";
  • CString fichier = "";
  • FILE * file;
  • // attribut d'ecriture en "a" car on ecrit plusieurs fois dans le fichier (à la suite)
  • file = fopen(nom,"a");
  • HANDLE hfind;
  • WIN32_FIND_DATA wfd;
  • hfind = FindFirstFile (rep + "*.*", &wfd );
  • if ( hfind != INVALID_HANDLE_VALUE )
  • {
  • do
  • {
  • // vérifie que ce n'est pas le répertoire racine
  • if( wfd.cFileName[0] != '.')
  • {
  • // vérifie si c'est un répertoire ou non
  • if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
  • {
  • // répertoire
  • sous_repertoire = rep + wfd.cFileName;
  • Cherch_Fic_Rep(sous_repertoire, nom);
  • }
  • else
  • {
  • // fichier
  • fichier = "CALL " + rep + wfd.cFileName;
  • // recherche de "." et positionnement dessus
  • fichier.Find(".");
  • // renvoi l'extension des fichiers
  • CString ext = fichier.Right(3);
  • // ecriture uniquement si ext = ".bat"
  • if (ext == "bat")
  • {
  • fichier += "\n";
  • if (file != NULL) fprintf (file,"%s",fichier);
  • else AfxMessageBox("Impossible d'ecrire le fichier");
  • }
  • else continue;
  • }
  • }
  • }
  • // suite de la recherche
  • while(FindNextFile( hfind, &wfd));
  • // recherche terminé
  • FindClose(hfind);
  • fclose(file);
  • }
  • return 0;
  • }
int CBatch::Cherch_Fic_Rep(CString rep, CString nom)
{
    rep = rep + "\\";
   CString sous_repertoire = "";
   CString fichier = "";
   FILE * file;

    // attribut d'ecriture en "a" car on ecrit plusieurs fois dans le fichier (à la suite)
    file = fopen(nom,"a");

   HANDLE hfind; 
   WIN32_FIND_DATA wfd; 

   hfind = FindFirstFile (rep + "*.*", &wfd );

   if ( hfind != INVALID_HANDLE_VALUE )
   {
       do
       {
                // vérifie que ce n'est pas le répertoire racine
	if( wfd.cFileName[0] != '.')
	{
	    // vérifie si c'est un répertoire ou non
	    if ( wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY ) 
	    {
	         // répertoire
	        sous_repertoire  = rep + wfd.cFileName;
	        Cherch_Fic_Rep(sous_repertoire, nom);	
	    }
	    else 
	    {
	        // fichier
	        fichier = "CALL " + rep + wfd.cFileName;
	        // recherche de "." et positionnement dessus
	       fichier.Find(".");
	       // renvoi l'extension des fichiers
	       CString  ext = fichier.Right(3);
	       // ecriture uniquement si ext = ".bat"
	       if (ext == "bat")
	       {
		fichier += "\n";
		if (file != NULL)	fprintf (file,"%s",fichier);
		else AfxMessageBox("Impossible d'ecrire le fichier");
	       }
	       else continue;
	    }
                 }
        }
        // suite de la recherche
        while(FindNextFile( hfind, &wfd));
        // recherche terminé
        FindClose(hfind);
        fclose(file);
    }
return 0;
}



 Sources du même auteur

Source avec Zip REMPLACER UNE CHAINE DANS PLUSIEURS FICHIER EN UN CLIC

 Sources de la même categorie

COMPTER LE NOMBRE DE PAGES D'UN FICHIER PDF par Renfield
Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel

Commentaires et avis

Commentaire de jprozorback le 30/10/2004 01:51:42

1 de + parmis le lot des recherche de fichier
mais tu precise meme pas l'heritage <windows.h>

Commentaire de _Bao_ le 26/02/2005 20:01:11

Attention les extensions ne font pas toujours 3 characteres.

Commentaire de laurent207 le 26/05/2005 11:57:10

on peut avoir un petit zip, stp

Commentaire de petit_loup77 le 26/04/2006 21:13:56

un zip serai le bien venu avec la precision du logiciel qui compile le zip
merci d'avance

Commentaire de gege1024 le 26/04/2006 22:52:45

un zip : pour quoi faire ?
tout est là, une seule fonction (methode dans mon cas).

Commentaire de sheorogath le 26/04/2006 23:09:47 administrateur CS

t'utilise les api windows ? (pour le zip je t'approuve mais quel compilateur/edi t'utilise?)

Commentaire de gege1024 le 26/04/2006 23:18:25

je compile sous vc++.
mais peut importe le complilo, c'est du c++ standard (avec MFC pour les CString)

Commentaire de sheorogath le 26/04/2006 23:20:15 administrateur CS

lol c'est vraiment pour ca que je n'ai jamais pu vraiment me mettre au c++ il y a meme pas une harmonisation au niveau des lib , et des compilos lol

Commentaire de BruNews le 27/04/2006 00:14:39 administrateur CS

Devcpp compile parfaitement un prog à base d'API Windows, il n'y a qu'à virer les CString inutiles et nuisibles.
Quand on cherche ".txt" en extension, on doit vérifier ces 4 caractères de fin et non 3, un fichier n'a pas obligatoirement une extension et son nom pourrait finir par "txt".

CString ext = fichier.Right(3);
Une alloc mémoire super utile...

Commentaire de metalange le 02/11/2009 12:25:32

Salut,
je suis tomber sur ce code qui m'intéresse mais j'ai un petit problème:
je ne peut pas passer de cstring en paramètre.
est-ce que quelqu'un aurait une idée?

Commentaire de metalange le 02/11/2009 14:25:01

petite précision je suis sur bcb6

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,842 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales