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

Code

 > 

Tutoriaux

 > LISTER FICHIERS ET RÉPERTOIRES (MULTIPLATEFORME)

LISTER FICHIERS ET RÉPERTOIRES (MULTIPLATEFORME)


 Information sur la source

Note :
Aucune note
Catégorie :Tutoriaux Classé sous :liste, dirent, posix, répertoire Niveau :Débutant Date de création :17/10/2011 Date de mise à jour :17/10/2011 23:09:33 Vu :2 310

Auteur : christophedlr

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

 Description

Exemple de listage des fichiers et répertoires. La méthode fonctionne sur les Linux comme les Windows (en tout cas Vista/Seven car pas testé sur XP et avant, mais Vista/Seven sont compatible POSIX pas XP et avant, donc pas sur que ça fonctionne).

Le fonctionnement est simple, on utilise des fonctions de la norme POSIX, tout système donc compatible peut l'utiliser sans aucun problème.

Source

  • #include <iostream>
  • #include <dirent.h>
  • using namespace std;
  • int main()
  • {
  • DIR* rep = opendir(".");
  • if ( rep != NULL )
  • {
  • struct dirent* ent;
  • while ( (ent = readdir(rep) ) != NULL )
  • {
  • cout << ent->d_name << endl;
  • }
  • closedir(rep);
  • }
  • return 0;
  • }
#include <iostream>
#include <dirent.h>

using namespace std;

int main()
{
    DIR* rep = opendir(".");

    if ( rep != NULL )
    {
        struct dirent* ent;

        while ( (ent = readdir(rep) ) != NULL )
        {
            cout << ent->d_name << endl;
        }

        closedir(rep);
    }

    return 0;
}

 Conclusion

Le code est en C++ (utilisation de cout) mais c'est identique en C. opendir permet d'ouvrir le répertoire, readdir de lire ce dernier et closedir le ferme. Pour le système, un répertoire c'est un dossier tout comme un fichier, pour savoir donc si c'est un dossier et éventuellement listé donc récursivement, il faut alors appeler opendir sur le répertoire dont on viens de récupérer le nom.

Il est certainement possible de faire autrement mais j'ai pas encore cherché de ce coté-ci.


 Historique

17 octobre 2011 23:09:33 :
Correction d'une erreur dans le titre

 Sources du même auteur

Source avec Zip COLORATION SYNTAXIQUE AVEC QSYNTAXHIGHLIGHTER DU FRAMEWORK Q...
Source avec Zip EXEMPLE D'UTILISATION SCRIPT LUA DANS PROGRAMME C

 Sources de la même categorie

UTILISATION DES TYPELIST EN C++ par wyden
Source avec Zip Source avec une capture QCSSCOMPRESSOR par alphaone
AFFICHAGE D'UN TRIANGLE ISOCELE par nabche
Source avec Zip GESTION D'UNE BIBLOTHEQUE par leclerro19
[PSP]HELLO WORLD par Mario1095

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture UNE LISTE HÉTÉROGÈNE DOUBLEMENT CHAINÉE par pgl10
Source avec Zip CALLOCATOR par troctsch
Source avec Zip Source avec une capture ANIMATIION GRAPHIQUE DES STRUCTURES DE DONNÉES par algoro
Source avec Zip Source avec une capture UTILISER LA LIB DIRENT par Lemng
LISTER LES FICHIERS D'UN REPERTOIRE + FILTRES par yvesyves

Commentaires et avis

Commentaire de shenron666 le 18/10/2011 11:50:13

tu peux regarder du côté de Boost::Filesystem
http://www.boost.org/doc/libs/1_47_0/libs/filesystem/v3/doc/index.htm

Commentaire de christophedlr le 18/10/2011 13:22:25

Salut,

Le but ici été d'avoir quelque chose de portable sans devoir disposer d'une librairie supplémentaire. Cela dit, oui je sais pour Boost, j'en ai souvent entendu parlé. Il réglerait le problème pour les systèmes non conforme POSIX, cela dit les ordinateurs sous 98 sont de plus en plus rare, quant à XP je suis pas sur qu'il soit conforme POSIX par défaut mais j'avais entendu parlé du Windows PowerShell, programme officiel qui augmente les possibilités de la console et rend le système POSIX et d'après ce que j'ai entendu, l'utilisation de PowerShell est de plus en plus courant sous XP, donc à ce niveau là pas de soucis.

Mais oui Boost est un bon moyen d'avoir du parfaitement portable en effet ;)

Commentaire de radinor le 24/10/2011 20:06:15

bonjour,

pourrait-on avoir une version exécutable sous windows XP ou W7 ?
j'ai des gros problèmes de listes de répertoires avec VBA pour Excel à cause des permissions de fichiers que je ne sais pas intercepter et qui me plantent !  
merci

Commentaire de CptPingu le 03/11/2011 12:22:59 administrateur CS

Si c'est du C, écris le en C. Donc iostream => stdio.h, std::cout => printf.
Si c'est du C++, alors: Évite les "using namespace", voir: http://0217021.free.fr/portfolio/axel.berardino/articles/bon-usage-using-namespace

Commentaire de christophedlr le 03/11/2011 12:28:32

C'est pas parce qu'un truc est du C que le C++ est interdit, première chose. Ensuite, les using namspace comme dit ton lien sont souvent mal utilisé, cela veut pas dire qu'il faut pas les utiliser bien au contraire. C'est pas toi qui va m'apprendre à utiliser cela. Imagine un programme don chaque fichier source fait plus de 500 lignes, si il y a aucun using namespace, c'est vide le bordel surtout si tu as 4 ou 5 namespace à utiliser.

En l'occurence ici, aucun risque d'un conflit car un seul et unique d'utiliser, donc je ne vois pas le problème.

Commentaire de CptPingu le 03/11/2011 12:41:25 administrateur CS

>> C'est pas parce qu'un truc est du C que le C++ est interdit,

On évite généralement de mélanger C et C++, même si c'est techniquement possible.

>> Imagine un programme don chaque fichier source fait plus de 500 lignes, si il y a aucun using namespace, c'est vide le bordel surtout si tu as 4 ou 5 namespace à utiliser.

Je suis au travail actuellement. J'ai près de 2000 fichiers C++, contenant parfois 3000 lignes. 0 using namespace !
C'est au contraire très bénéfique, et bien plus explicite. Puisque je sais au premier coup d'oeil si une collection est standard ou si c'est une réecriture personnalisé pour un besoin spécifique. De plus, plus un projet grossi plus les conflits potentiels augementent. J'ai eu pour projets d'incorporer une solution avec des using dégueux, au sein de notre solution principale. C'était un cauchemar, puisque le projet à incorporer avait pris la liberté de faire des collections personnalisées au nom de collection du système tout en éclatant les namespaces (via using).
Je ne vais pas réécrire mes raisons, mon post les décrit très bien. Libre à toi d'écouter les conseils des plus expérimentés. Ce n'est pas pour rien que tu trouveras ce genre de pratique déconseillé dans pas mal d'entreprise.
En revanche, ton codes contient une mauvaise pratique facilement évitable, et c'est dommage de montrer ça à un public de débutant.

>> as 4 ou 5 namespace à utiliser.
Alias ? Using simple à portée limité ? Ou simple problème de conception ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Liste des fichiers d'un répertoire distant [ par yerosnimus ] Bonjour,J'ai réussi à faire un programme qui me connecte sur mon serveur FTP.J'aimerai pouvoir affichier la liste des fichiers contenus dans le répert Lecture de la liste des fichiers d'un répertoire distant [ par alain34270 ] Bonjour,Je cherche un moyen d'obtenir la liste des fichiers d'un répertoire distant, ainsi que leurs attributs, connaisant l'URL du répertoire. Je sai Liste fichier wxWindows [ par probordelais ] Bonjour,Je commence à utiliser wxWindows. Le truc que je veux faire c'est sélectionner un répertoire et ensuite lister automatiquement tous les fichie FtpFindFirstFile [WININET] [ par victorcoasne ] Bonjour,J'utilise la fonction FtpFindFirstFile avec wininet.Tout fonctionne parfaitement sauf quand le nom contient par exemple une cédille.Exemple :< extraire une liste de fichier [ par marco62118 ] bonsoir à tous je voudrais faire une liste dans un fichier dirphoto.txt des noms de fichier de toutes mes photos qui sont sous un ensemble de sous ré Parcour d'un répertoire [ par garslouche ] Bonjour,je voudrais afficher dans une listbox tous les sous-répertoires d'un répertoire donnéPour le remplissage de la liste...ça va aller...mais pour Liste de recherche de répertoire [ par olivieragnes ] je cherche un moyen de faire un choix de répertoire avec un controle qui affiche de déroulement des répertoire.Il faudrait que le déroulement de réper problème de création d'un objet sur une liste [ par Zaz16 ] Bonjour, Je travaille avec visualC++ 6.0 et les classes MFC. J'ai créé une fonction copier/coller avec un menu contextuel. Jusque là tout va bien. Je Liste chainée d'objets de classes différentes [ par gillig ] Voici un problème auquel je ne trouve pas de réponse, enfin, rien d'efficace.J'ai une classe CDessin contenant une liste chaînée (CList) de pointeurs liste d'arguments variable [ par clenio ] Salutest ce que qqu pourrait me dire comment on peut accéder au argument qui n'ont pas étés nommés?clenio


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,499 sec (3)

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