Lister fichiers et répertoires (multiplateforme)

Contenu du snippet

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 / Exemple :


#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.

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.