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

Boost C++ Discussion :

[boost.fs] lister le contenu d'un répertoire, mais à rebours


Sujet :

Boost C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut [boost.fs] lister le contenu d'un répertoire, mais à rebours
    Salut, je cherche à lister les répertoires (et éventuellement aussi les fichiers), mais d'une façon particulière :
    Je veux partir d'un répertoire quelconque, puis récupérer les n répertoires avant et après lui.

    Donc pour cela, je dois pouvoir parser à rebours, et je ne vois pas comment faire ça simplement...
    J'ai vu que la librairie Boost semblait permettre ça, mais j'arrive pas à l'utiliser, j'ai des erreurs à la compilation (au passage, je suis sous Linux)

    Quelqu'un aurait-il une idée ?

    Merci d'avance !

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Boost.Filesystem permet de gérer tout ça sous forme d'itérateurs.
    Ca te laisse pas mal de flexibilité pour faire ce que tu veux. Si tu as des problèmes avec boost, tu n'as qu'à poster dans le sous-forum Boost ici-même

  3. #3
    Provisoirement toléré
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par zarbiman Voir le message
    Salut, je cherche à lister les répertoires (et éventuellement aussi les fichiers), mais d'une façon particulière :
    Je veux partir d'un répertoire quelconque, puis récupérer les n répertoires avant et après lui.
    Avant et après, par rapport à quel ordre?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    Par rapport à l'ordre alphabétique.
    Je veux juste récupérer un certain nombre de fichiers pour les afficher, et dans le cas des répertoires très remplis (/usr dans un système linux par exemple, ou c:\windows), ça poserait des problèmes de toute traiter...
    Et comme je veux centrer mon affichage sur un répertoire précis, je dois aussi récupérer les répertoires qui se situent avant (dans l'ordre alphabétique)

    Pour Boost, je vais réessayer tout à l'heure et poster les erreurs que j'obtiens à la compilation...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    C'est bon, je pense avoir trouvé le problème avec Boost : je ne trouvais pas la commande à ajouter au makefile pour utiliser la librairie.
    Pour les générations futures, il fallait ajouter -lboost_filesystem

    Puisque ça ne dérape plus à la compilation, je pense pouvoir me débrouiller pour le code.

    Merci !

  6. #6
    Provisoirement toléré
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Points : 495
    Points
    495
    Par défaut
    Citation Envoyé par zarbiman Voir le message
    Pour les générations futures, il fallait ajouter -lboost_filesystem
    Les générations futures penseront aussi à indiquer si l'erreur se produit à compilation (gcc, g++) ou au link (ld).

    De préférence en copiant systématiquement le message d'erreur - ça peut faire gagner beaucoup de temps.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    Le message étant particulièrement incompréhensible je suis pas sûr que ça aide vraiment, mais voilà :

    /tmp/cc59DBV0.o: In function `boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> boost::filesystem::current_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >()':
    main.cpp.text._ZN5boost10filesystem12current_pathINS0_10basic_pathISsNS0_11path_traitsEEEEET_v[boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> boost::filesystem::current_path<boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> >()]+0x19): undefined reference to `boost::filesystem::detail::get_current_path_api(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
    collect2: ld a retourné 1 code d'état d'exécution
    make: *** [Affichage] Erreur 1

  8. #8
    Provisoirement toléré
    Profil pro
    Inscrit en
    Février 2008
    Messages
    439
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 439
    Points : 495
    Points
    495
    Par défaut
    Il faudrait décoder _ZN5boost10filesystem12current_pathINS0_10basic_pathISsNS0_11path_traitsEEEEET_v, en effet; mais à part ça, c'est clair, non?

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    119
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 119
    Points : 55
    Points
    55
    Par défaut
    J'arrive à utiliser la librairie boost à peu près , mais il me reste des difficultés :
    - Je voudrais lorsque je liste le contenu d'un répertoire que ça soit déjà trié par ordre alphabétique (ou lexicographique)
    - de plus je n'arrive toujours pas à lister à rebours, ce qui est génant.

    En reprenant l'exemple de la faq, j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(boost::filesystem::directory_iterator it(_path); it != boost::filesystem::directory_iterator(); ++it)
    {
    	/* ... */
    }
    Ca fonctionne très bien pour lister les fichiers dans un sens, mais pas dans l'autre... Je n'ai pas vu comment gérer celà. Mais de toute façon, vu que ça liste "dans le désordre", je n'ai pas les infos que je veux ; j'obtiens ceci :
    /home/user
    /home/user/.gnome
    /home/user/Examples
    /home/user/.fontconfig
    /home/user/.thumbnails
    /home/user/Bureau
    /home/user/.metacity
    /home/user/.cache
    /home/user/Public
    /home/user/.themes

    Moi ce qui m'intéresse, c'est le voisinage proche d'un répertoire ou fichier (choisi au préalable), et je voudrais ne pas avoir à parser tout le répertoire qui le contient...

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/01/2008, 02h53
  2. Lister le contenu d'un répertoire présent dans le classpath
    Par kaptainflam dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/08/2007, 16h08
  3. Réponses: 5
    Dernier message: 30/08/2006, 18h23
  4. Lister le contenu d'un répertoire
    Par rob_57 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 09/10/2005, 19h16
  5. Lister le contenu d'un répertoire distant
    Par dody dans le forum Langage
    Réponses: 3
    Dernier message: 06/10/2005, 17h23

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