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

C++ Discussion :

récupération de tous les répertoires et sous-répertoires


Sujet :

C++

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut récupération de tous les répertoires et sous-répertoires
    Bonjour, j'ai le code suivant qui me permet de récupérer tous les dossiers et fichiers d'un répertoire donné :

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    using std::vector;
    using std::string;
     
    #if defined(_WINDOWS)
    #include <windows.h>
    #else /* environnement conforme a la norme POSIX */
    #include <dirent.h>
    #endif
     
    void dir(const string & dirname,vector<string> & listfiles)
    {
    	listfiles.clear();
     
    #if defined(_WINDOWS)
    	WIN32_FIND_DATA File;
        HANDLE hSearch;
     
    	const string list = (dirname[dirname.size() - 1] != '/') ? dirname + "/*.*" : dirname + "*.*";
    	hSearch = FindFirstFile(list.c_str(), &File);
     
        if (hSearch != INVALID_HANDLE_VALUE)
        {
            do
    		{
    			listfiles.push_back(File.cFileName);
            }
    		while(FindNextFile(hSearch, &File));
     
            FindClose(hSearch);
        }
    #else /* environnement conforme a la norme POSIX */
    	DIR * rep = opendir(dirname.c_str());
     
    	if (rep != NULL)
        {
            struct dirent * ent;
     
            while ((ent = readdir(rep)) != NULL)
            {
                listfiles.push_back(ent->d_name);
            }
     
            closedir(rep);
        }
    #endif
    }
    Ma question est la suivante : comment puis-je détecter si le ieme élément renvoyé est un fichier ou un dossier (dans le cas windows ou linux) ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 533
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 533
    Points : 6 709
    Points
    6 709
    Par défaut
    BOnjour,

    sous Linux vous pouvez utiliser ce qui est fourni par #include <sys/stat.h>, en particulier les macros posix S_ISxxx :
    • S_ISREG(m) un fichier 'normal'
    • S_ISDIR(m) un répertoire
    • S_ISCHR(m) un péripherique en mode caractère
    • S_ISBLK(m) un périphrique en mode bloc
    • S_ISFIFO(m) une FIFO
    • S_ISLNK(m) un lien symbolique
    • S_ISSOCK(m) une socket
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    OK merci pour tes infos. Je vais chercher pour windows...

  4. #4
    Membre confirmé Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Points : 496
    Points
    496
    Par défaut
    La fonction GetFileAttributes te retourn un DWORD et tu peux savoir si c'est un repertoire avec le flag FILE_ATTRIBUTE_DIRECTORY.
    ________________________________________________
    http://bliquid.fr : Blog sur Android et l'Acer Liquid

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

Discussions similaires

  1. Script Shell : lister tous les fichiers d'un répertoire et sous rép
    Par raton_laveur dans le forum Shell et commandes GNU
    Réponses: 11
    Dernier message: 22/01/2009, 16h43
  2. Réponses: 2
    Dernier message: 01/11/2007, 11h07
  3. Réponses: 7
    Dernier message: 06/09/2007, 13h18
  4. Réponses: 4
    Dernier message: 31/05/2007, 15h25
  5. Réponses: 2
    Dernier message: 15/08/2006, 16h43

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