IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

wxWidgets Discussion :

Lister les fichiers d'un répertoire


Sujet :

wxWidgets

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Points : 8
    Points
    8
    Par défaut Lister les fichiers d'un répertoire
    [Suite à cette discussion]
    Bonjour.
    Je me permets de passer derrière pour demander une explication complémentaire.
    Je n'ai pas encore testé ce code, car... Je n'ai pas encore compris son fonctionnement.
    Je désire moi aussi faire une recherche récursive sur un ensemble de sous dossiers (nombre non défini par avance).
    Reprenons donc l'exemple des fichiers *.jpg.
    Comment faire pour lister TOUS les *.jpg d'une partition, et ranger tous les résultats dans un simple array?
    Merci d'avance pour votre aide.
    A bientôt,
    T@PµZ.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour,
    wxWidgets te propose 2 moyens pour lister les fichiers d'un répertoire :
    1/wxDir::GetAllFiles : cette fonction remplit un tableau donné en paramètre en fonction du critère de recherche spécifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    static size_t GetAllFiles(
       const wxString& dirname, // répertoire où démarre la recherche
       wxArrayString *files, // tableau recevant les données
       const wxString& filespec = wxEmptyString, // masque de fichiers à rechercher - si vide = tous
       int flags = wxDIR_DEFAULT // flags
    )
    Cela s'utilise simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    wxString dir_root = wxT("C:\\My files\\");
    wxArrayString files_result;
    wxDir::GetAllFiles(dir_root,&files_result,wxT("*.jpg"));
    for(size_t i=0;i<files_result.GetCount();++i){
       std::cout<<files_result[i]<<std::endl;
    }
    2/ wxDir::Traverse : sollicite un objet wxDirTraverser en fonction de l'objet parcouru. Tu dois dériver une classe de wxDirTraverser et spécialiser les fonctions OnDir (appelée dès qu'un répertoire est franchi), OnFile (idem, pour les fichiers), OnOpenError sur erreur d'ouverture d'un répertoire. Cette dernière méthode te permet de contrôler plus finement l'énumération, car tu peux l'arrêter quand tu veux, skipper des répertoires, etc. en fonction de la valeur retournée par ta surcharge.
    Je repompe l'exemple de la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
        class wxDirTraverserSimple : public wxDirTraverser
        {
        public:
            wxDirTraverserSimple(wxArrayString& files) : m_files(files) { }
     
            virtual wxDirTraverseResult OnFile(const wxString& filename)
            {
                m_files.Add(filename);
                return wxDIR_CONTINUE;
            }
     
            virtual wxDirTraverseResult OnDir(const wxString& WXUNUSED(dirname))
            {
                return wxDIR_CONTINUE;
            }
     
        private:
            wxArrayString& m_files;
        };
     
        // get the names of all files in the array
        wxArrayString files;
        wxDirTraverserSimple traverser(files);
     
        wxDir dir(dirname);
        dir.Traverse(traverser,wxT("*.jpeg"));

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 15
    Points : 8
    Points
    8
    Par défaut
    Merci!
    Voilà qui est clair et évident maintenant.
    Hourra!, j'ai tout compris! (pour le moment).
    A bientôt.
    T@PµZ.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lister les fichiers d'un répertoire dans une feuille Excel
    Par AlainTech dans le forum Contribuez
    Réponses: 3
    Dernier message: 10/03/2016, 14h14
  2. [C++/Unix] Lister les fichiers d'un répertoire
    Par bouazza92 dans le forum Linux
    Réponses: 5
    Dernier message: 10/12/2013, 22h07
  3. Lister les fichiers d'un répertoire (ordre alphabétique)
    Par Mysti¢ dans le forum Général Python
    Réponses: 2
    Dernier message: 15/01/2007, 17h10
  4. lister les fichiers d'un répertoire et les ouvrir
    Par thong36 dans le forum Langage
    Réponses: 1
    Dernier message: 18/10/2006, 10h43
  5. [CF][PPC/C#] Comment lister les fichiers d'un répertoire ?
    Par dady dans le forum Windows Mobile
    Réponses: 18
    Dernier message: 20/05/2005, 14h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo