begin process at 2012 05 29 19:52:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

lundi 23 janvier 2006 à 08:37:50 | obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

almousafer

Salut je programme une application et j'ai besoin de savoir comment obtenir la liste des sous répértoires d'un répértoire : en effet ce répertoire contient des sous répértoires, et chaque sous répértoire contient une image Medicale. Donc Je spécifie le nom du répértoire, et la fonction va parcourir successivement tous les sous répértoires et elle lira l'image trouvée dans chacun(....) J'utilise le Linux Mandriva 2006 (gcc-4-..) Merci.
lundi 23 janvier 2006 à 15:28:20 | Re : obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

fredcl

Bonjour,

regarde les structures  :  DIR, dirent et stat.
puis les fonctions et macro : opendir, readdir, stat, S_ISDIR et closedir.

Voici un exemple d'utilisation, mais attention c'est codé avec wxWidgets,
c'est donc juste un exemple du principe d'utilisation des structures, macro et fonctions citées ci-dessus.

/*---------------------------------------------------------------------------*/
void wxMyFTPFrame::UpdateDisplay()
{
   int image_id;
   long lCount;
   size_t count;
   wxArrayString files;
   wxString current, tmp;
   DIR *dp;
   dirent *ep;
   struct stat buf;

   current = wxGetCwd();
   m_LocalFiles->DeleteAllItems();

   dp = opendir(current.c_str());
   if (dp != NULL)
   {
      count = 0;
      while ((ep = readdir(dp)) != NULL)
      {
         tmp = ep->d_name;
         files.Add(tmp);
         count++; // le Data ne seras pas égal à zéro
         if (tmp != _T("."))
         {
            if (stat(tmp.c_str(), &buf))
            {
               buf.st_mode  = 0;
               buf.st_size = 0;
               buf.st_atime = 0;
               buf.st_mtime = 0;
               buf.st_ctime = 0;
            }
            lCount = m_LocalFiles->GetItemCount();
            lCount = m_LocalFiles->InsertItem(lCount, tmp);

            if (S_ISDIR(buf.st_mode))
            {
               m_LocalFiles->SetItem(lCount, 1, _T("<DIR>"));
               m_LocalFiles->SetItemImage(lCount, wxFileIconsTable::folder);
               m_LocalFiles->SetItemData(lCount, -count);
            }
            else
            {
            #ifdef __WXMSW__
               m_LocalFiles->SetItem(lCount, 1, wxString::Format(_T("%lu"), buf.st_size));
            #else
               m_LocalFiles->SetItem(lCount, 1, wxString::Format(_T("%llu"), buf.st_size));
            #endif
               image_id = wxFileIconsTable::file;
               if (tmp.Find(_T('.')) != wxNOT_FOUND)
                   image_id = wxTheFileIconsTable->GetIconID(tmp.AfterLast(_T('.')));
               m_LocalFiles->SetItemImage(lCount, image_id);
               m_LocalFiles->SetItemData(lCount, count);
            }
            wxDateTime dateTime(buf.st_mtime);
            // The  ISO 8601 format is HH:MM:SS. I don't want the second
            m_LocalFiles->SetItem(lCount, 2, dateTime.FormatISODate() + _T(" ") + dateTime.FormatISOTime().Left(5));
         }
      }
      closedir (dp);
      m_LocalFiles->SortItems(CompareList, (long)&files);
   }
}
/*---------------------------------------------------------------------------*/


Cordialement

Fred Cailleau-Lepetit ( [ Lien ])

mercredi 25 janvier 2006 à 08:09:11 | Re : obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

almousafer

salut Fred et merci pour ta réponse, ça m'a aidé vraiment beaucoup, mais il reste encore un pb. en effet voila le code que j'ai ecris à partir de ce que tu m'as ecris : #include #include #include #include #include #include int main( int argc, char* argv[] ) { if( argc < 2 ) { std::cerr << "Usage: " << std::endl; std::cerr << argv[0] << " DicomDirectory" << std::endl; return EXIT_FAILURE; } std::string tmp; DIR *dp; dirent *ep; struct stat buf; dp = opendir(argv[1]); if (dp != NULL) { while ((ep = readdir(dp)) != NULL) { tmp = ep->d_name; std::cout<<"lecture de :"<
mercredi 25 janvier 2006 à 10:27:28 | Re : obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

almousafer

salut Fred j'ai copié l'executable sous un autre répertoire et je l'ai executé là et sa marche bien. Donc il ne marche bien que dans le répertoire courant ( où il se trouve) et ses sous répertoires. est ce que t'as une idée sur ce qui se passe?
mercredi 25 janvier 2006 à 10:51:18 | Re : obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

fredcl

Bonjour,

Malheureusement je ne peux pas tester ton code sous une machine unix pour l'instant (déplacement).
Mais il me semble que le problème se situe là :          if (stat(tmp.c_str(), &buf))
car tmp.s_tr() est égal au nom de ton répertoire et pas au chemin complet
il faudrait donc un truc du genre : tmp = argv[1] + SEPARATEURDEREPERTOIRE + tmp
puis lancer la fonction stat.

Cordialement

Fred Cailleau-Lepetit ( [ Lien ])

mercredi 25 janvier 2006 à 11:31:48 | Re : obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

almousafer

salut Fred Ok je vais réessayer A+
mercredi 25 janvier 2006 à 12:28:32 | Re : obtenir la liste des sous répértoires d'un répértoire (Linux gcc-4.0)

almousafer

Salut Fred J'ai essayé comme tu as dis et Je pense que c'est bon comme, ça marche bien merci TimCha. #include #include #include #include #include #include void BrowseDir(std::string current) { std::string tmp,repc=".",repp=".."; DIR *dp; dirent *ep; struct stat buf; dp = opendir(current.c_str()); if (dp != NULL) { while ((ep = readdir(dp)) != NULL) { if (ep->d_name != repc & ep->d_name !=repp) { tmp = current+"/"+ep->d_name; if (stat(tmp.c_str(), &buf)) { buf.st_mode = 0; buf.st_size = 0; buf.st_atime = 0; buf.st_mtime = 0; buf.st_ctime = 0; } if (S_ISDIR(buf.st_mode)) { std::cout<<"répértoire "<


Cette discussion est classée dans : liste, linux, obtenir, répértoire, répértoires


Répondre à ce message

Sujets en rapport avec ce message

obtenir son ip (linux) [ par Anacr0x ] Comme le dit le titre, je cherche a obtenir l'IP de mon ordi sous linux (si possible avec QT ca sympa, mais je rêve pas trop)Je rencontre pas mal de d Comment obtenir la liste des services qui tournent? [ par raton_laveur ] Bonjour,     j'ai besoin de faire une fonction qui retourne si mon serveur tourne toujours ou pas. Mais le ping ne suffit pas, j'ai besoin de savoir s Obtenir GTK ou QT (sans connexion ADSL) [ par Flachy Joe ] Salut,je voudrai me mettre à la progg sous linux, je programme déja en VB6 (sous vindoz évidemment) et j'ai des notions de C++ et de Java. Mon problem Obtenir une liste de mes connexions d'accès à distance [ par Nissa_Hunter ] Bonjour à tous, J'ai besoin de créer un programme en C++ qui me permettrait de lister les connexions d'accès à distance présentes sur mon ordinateur e afficher Liste des PID d'un program qlq sous linux et tuer les doublons [ par developper55 ] Bonjour,je suis à la recherche d'un exemplaire qui affiche liste des PID d'un program donné, sans passé par les commandes des linux comme PIDOF,, et j Obtenir la liste les noms d'ordinateurs present dans un reseau local [ par wisar ] Salut Tout est dans le titre, depuis un moment je recherche un moyen de récupérer la liste des nom d'ordinateur dans un réseau local Peu importe quel C/C++ : Comment obtenir la liste des process tournant sur une station ? [ par kiki37 ] Bonjour,J'aimerais récupérer d'une manière ou d'une autre la liste des applications (ou des process) tournant sur la station à un instant t.L'environn liste des classes [ par dev2 ] J'ai un programme VC++ avec de nombreuses classes, et j'aimerai savoir comment imprimer la liste de ces classes, de façon hiérarchique, simplement, av timer avec linux[?] [ par dmothes ] Help!!!quelqu'un pourrait-il m'aider? j'ai besoin d'utiliser un timer sous linux (si possible, en millisecondes)...faut-il utiliser linux/timer.h? com Dupliquer un GtkCombo [ par Moogle ] Dans un programme en GTK+ 1.2, j'ai dans une fenetre 12 GtkCombo, qui doivent tous afficher la meme grosse liste de 256 éléments.Quand je crèe la fene


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,718 sec (4)

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