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

GTK+ avec C & C++ Discussion :

Récupérer la liste des fichiers d'un dossier donné


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut Récupérer la liste des fichiers d'un dossier donné
    Bonjours a tous!
    Avant de me faire incendier, sachez que j'ai déjà passé pas mal de temps sur le tuto de Julian Ibarz
    http://julian-ibarz.developpez.com/t...glib/dossiers/
    Je n'ai cependant pas du tout comprendre. Je m'explique:

    J'ai un chemin de dossier et je cherche à lister les fichier à l'intérieur.
    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
    static void refreshMelList(const gchar *directory)
    {
    	GDir *dir;
    	const gchar *fileName = NULL;
    	gboolean isDirectory = 0;
    	dir = g_dir_open(directory, 0, NULL);
    	while(fileName = g_dir_read_name(dir))
    	{
    		if(!g_file_test(fileName, G_FILE_TEST_IS_DIR))
    		{
    			printf("%s\n",fileName);
    		}
    	}
    	g_dir_close(dir);
     
    }
    Dans le main.c, je l'appel comme ça:
    refreshMelList("c:\\");
    Et dans ma console, j'obtiens ça:
    18fdb4c9959a7e8641
    AUTOEXEC.BAT
    boot.ini
    canon
    CONFIG.SYS
    d0421bfe64d7501f2d
    Documents and Settings
    Drivers
    FlexLM
    install
    IO.SYS
    MinGW
    MSDOS.SYS
    NTDETECT.COM
    ntldr
    NVIDIA
    pagefile.sys
    Program Files
    Program Files (x86)
    Python30
    RECYCLER
    System Volume Information
    WINDOWS
    Mon file test ne fonctionne pas. Mais quand je l'appel comme ça:
    refreshMelList(".");
    Il me liste bien "QUE" les fichiers du mon "home user" (XP).
    Bref je galère un peu.
    A l'origine je voudrait récupérer une liste de tout les fichier se terminant par .ma ou .mb.

    Je vous remercie d'avance pour le temps que vous passerez à me répondre.

    Bonne journée.

    Dorian

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Je pense que filename est relatif au répertoire dans lequel il se trouve. g_file_test veut un chemin absolu. Il doit donc te manquer un g_build_filename pour construire le nom de fichier à tester.

  3. #3
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Super! ça marche! Merci
    g_file_test veut un chemin absolu
    Il semblerai que oui ce soit ça.
    Je remet le nouveau code pour les prochains qui aurons le problème:
    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
    static void refreshMelList(const gchar *directory)	//si directory = "c:/monDossier"
    {
    	GDir *dir;
    	const gchar *fileName = NULL;
    	dir = g_dir_open(directory, 0, NULL);	//on ouvre le repertoire
    	while(fileName = g_dir_read_name(dir))	//on lit le nom du prochain fichier dans le repertoir et tant qu'il y a un fichier (monFichier.txt par exemple)
    	{
    		fileName = g_build_filename(directory, fileName, NULL);	//on "reconstruit" le chemin du fileName pour avoir un chemin absolu. monFichier.txt devient "c:/monDossier/monFichier.txt". NULL indique la fin de la "reconstruction"
    		if(!g_file_test(fileName, G_FILE_TEST_IS_DIR))	//si "c:/monDossier/monFichier.txt" n'est pas un repertoire
    		{
    			printf("%s\n",fileName);	//on imprime son nom
    		}
    	}
    	g_free(fileName);	//on désalloue la mémoire
    	g_dir_close(dir);	//et on oublie pas de fermer le dossier ouvert
    }
    Un grand merci a toi teuf13. Je débute en GTK et je dois dire que je suis bluffé par les possibilité (avec glib on a un "petit" framework très pratique).

    Une dernière question (Dites le moi si j'abuse): Existe t-il une fonction permettant de connaitre l'extension d'un fichier ou bien il faut faire ça à la main? (J'en doute vu la lib).

    Merci d'avance!

    Dorian

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 259
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 259
    Par défaut
    Il faut faire un g_free sur la valeur renvoyée par g_build_filename. Pour trouver l'extension, je ferais un g_strrstr (filename, '.');

  5. #5
    Membre confirmé Avatar de Narann
    Inscrit en
    Juin 2007
    Messages
    140
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 140
    Par défaut
    Il faut faire un g_free sur la valeur renvoyée par g_build_filename.
    Exact, c'est édité!
    Pour trouver l'extension, je ferais un g_strrstr (filename, '.');
    Ok donc pas de moyen "direct" de le faire (Je vais voire comment la fonction réagit avec un fichier de type: E01P001.064.tif).

    Merci beaucoup!

    Dorian

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

Discussions similaires

  1. liste des fichiers d'un dossier
    Par brudao dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/05/2009, 19h11
  2. récupérer la liste des fichiers d'un dossier dans un fichier texte
    Par mathieu_r dans le forum Développement de jobs
    Réponses: 3
    Dernier message: 26/04/2009, 20h47
  3. [E-03] ListBox avec liste des fichiers d'un dossier
    Par Daejung dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 01/11/2008, 02h43
  4. Récupérer les paths des fichiers d'un dossier
    Par damdam44 dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 03/06/2008, 17h07
  5. Réponses: 4
    Dernier message: 04/01/2007, 20h30

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