Parcours (recursif) d'un repertoire + listage

cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005 - 23 déc. 2002 à 13:44
cs_abdenour123 Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 29 mai 2009 - 11 août 2008 à 00:14
sachant que je vais me servir de vc++ 6 j'aimerais savoir comment parcourir un repertoire(recursivement) et ses entrées puisque, a priori(sauf erreur de ma part) ya pas opendir et readdir qui sont relativement pratique.

Merci

3 réponses

jcecchi Messages postés 117 Date d'inscription samedi 12 janvier 2002 Statut Membre Dernière intervention 14 janvier 2003 3
23 déc. 2002 à 16:26
Salut,

Regarde du cote de FindFirstFile et FindNextFile.
Je te laisse regarder les details dans MSDN.
0
cs_goth Messages postés 82 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 23 août 2005
24 déc. 2002 à 16:29
merci c cool
0
cs_abdenour123 Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 29 mai 2009
11 août 2008 à 00:14
//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
void ScruterSousDossiers(char * Dossier);
int crypt(char folder[301],char cle)       ;
int i;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
/*Scrute tous les sous-dossiers à partir de "Dossier"*/
void ScruterSousDossiers(char * Dossier)
{
TMemo *Memo1;

    HANDLE hRecherche;
    WIN32_FIND_DATA WFD;
    char * Nom = WFD.cFileName;
    char DossFiltre[1024], DossRech[1024];
//-----//
    strcpy(DossFiltre, Dossier);
    strcat(DossFiltre, "*.*");
    hRecherche = FindFirstFile(DossFiltre, &WFD);
    if(hRecherche == INVALID_HANDLE_VALUE)
    {
        FindClose(hRecherche);
        return;
    }
    do
    {
               if((WFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY)
        {
              if(!(Nom[0] == '.' && !Nom[1]) && !(Nom[0] == '.' && Nom[1] == '.' && !Nom[2]))
            {

                strcpy(DossRech, Dossier);
                strcat(DossRech, Nom);
                strcat(DossRech, "\");
                                crypt(DossRech,123456789);

                ScruterSousDossiers(DossRech);
                }
                 }
    }
    while(FindNextFile(hRecherche,&WFD));
    FindClose(hRecherche);
}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 crypt("C:\\abdenour\",123456789);
 ScruterSousDossiers("C:\\abdenour\");

}
//---------------------------------------------------------------------------
int crypt(char folder[301],char cle)
{

    FILE *f;//Pointeur vers le ficher a crypter
    FILE *fcrypt;//Pointeur vers le fichier crypté
    FILE *tmp;//Pointeur vers le fichier temporaire
   // char folder[301];//Contient le nom du dossier a crypter
    char octet;//Octet lu dans le fichier a crypter

  //  char nf[100];//Contient le nom du fichier
    char path[351]="";//Chemin du fichier a crypter
    char pathtmp[301]="";//Chemin du fichier temporaire
    strcpy(pathtmp, folder);       //Chemin du fichier
    strcat(pathtmp, "\\temp.abdenour"); //temporaire

     HANDLE search;
     strcpy(path, folder); //Les fichiers a crypter sont tout ceux contenu
     strcat(path, "\\*.*");//dans folder...
     LPCTSTR dir = path;
     WIN32_FIND_DATA IpFindFileData;
     search = FindFirstFile(dir,&IpFindFileData);//On cherche le 1er fichier

     strcpy(path, folder);
     strcat(path, "\");
     strcat(path, IpFindFileData.cFileName);

     f = fopen(path, "rb"); //On ouvre le fichier
     if(f!=NULL)//Si il n'y a pas d'erreur lors de l'ouverture du fichier...
     {
       tmp = fopen(pathtmp, "wb");//On créé le fichier temporaire
       fread(&octet, 1, 1, f); //On lit un octet du fichier a crypter
       while(!feof(f))//Tant qu'on est pas a la fin du fichier...
        {
        fwrite(&octet, 1, 1, tmp);//...on ecrit l'octet lu dans le fichier temp.
        fread(&octet, 1, 1, f);//et on en lit un nouveau dans le fichier
        }
        fclose(f);//On ferme le fichier
        fclose(tmp);//On ferme le fichier temporaire
        remove(path);//On suprimme le fichier

        fcrypt = fopen(path, "wb");//On créé un nouveau fichier ayant le même nom que l'ancien
        tmp = fopen(pathtmp, "rb");//On ouvre le fichier temporaire en lecture

        fread(&octet, 1, 1, tmp);//On lit un octet du fichier temporaire

        while(!feof(tmp))
        {
        octet=octet^cle;//On inverse les bits de l'octet lu...
        fwrite(&octet, 1, 1, fcrypt);//...et on l'ecrit dans le nouveau fichier...
        fread(&octet, 1, 1, tmp);//...puis on lit un nouvel octet dans le fichier temp.
        }

        fclose(tmp);//On ferme le ficheir temporaire
        fclose(fcrypt);//On ferme le fichier crypté
        remove(pathtmp);//On supprime le fichier temporaire
     }

  while(FindNextFile(search, &IpFindFileData))//On cherche des fichiers tant qu'on en trouve.
  {
    printf(".");
    strcpy(path, folder);
    strcat(path, "\");
    strcat(path, IpFindFileData.cFileName);

  f = fopen(path, "rb"); //On ouvre le fichier
  if(f!=NULL)//Si il n'y a pas d'erreur lors de l'ouverture du fichier...
    {
     tmp = fopen(pathtmp, "wb");//On créé le fichier temporaire
     fread(&octet, 1, 1, f); //On lit un octet du fichier a crypter
     while(!feof(f))//Tant qu'on est pas a la fin du fichier...
         {
         fwrite(&octet, 1, 1, tmp);//...on ecrit l'octet lu dans le fichier temp.
         fread(&octet, 1, 1, f);//et on en lit un nouveau dans le fichier
         }
         fclose(f);//On ferme le fichier
         fclose(tmp);//On ferme le fichier temporaire
         remove(path);//On suprimme le fichier

         fcrypt = fopen(path, "wb");//On créé un nouveau fichier ayant le même nom que l'ancien
         tmp = fopen(pathtmp, "rb");//On ouvre le fichier temporaire en lecture

          fread(&octet, 1, 1, tmp);//On lit un octet du fichier temporaire

     while(!feof(tmp))
          {
          octet=octet^cle;//On inverse les bits de l'octet lu...
          fwrite(&octet, 1, 1, fcrypt);//...et on l'ecrit dans le nouveau fichier...
          fread(&octet, 1, 1, tmp);//...puis on lit un nouvel octet dans le fichier temp.
          }
 
          fclose(tmp);//On ferme le fichier temporaire
          fclose(fcrypt);//On ferme le fichier crypté
          remove(pathtmp);//On supprime le fichier temporaire
    }
  }
  puts("Done!");
  getchar();
  fflush(stdin);

  FindClose(search);//La recherche est terminée...
}//...la fonction aussi...
0
Rejoignez-nous