Parcourir des sous-dossiers de façon récursive¶
On a (parfois pour le moment, sans doute souvent bientôt) de parcourir des dossiers et leurs sous-dossiers à la recherche d'un fichier précis.
C'est pas que ce soit très compliqué, quand on a compris le concept du parcours récursif, mais plutôt que d'avoir à réfléchir pour réécrire à chaque fois voici une fonction :
QString parcoursRecursif(QString dossierOuOnCherche) { QString cheminDuFichierQueJeVeux="vide"; QDir dir(depart); //Attention a ne pas prendre le repertoire "." et ".." foreach(QFileInfo fileInfo, dir.entryInfoList(QDir::AllEntries | QDir::NoDotAndDotDot)) { if(cheminDuFichierQueJeVeux!="vide") return cheminDuFichierQueJeVeux; if(fileInfo.isDir()) { //C'est ici que le parcours est récursif qDebug() << "Répertoire: " << fileInfo.filePath(); parcoursRecursif(fileInfo.filePath()); } else { qDebug() << "Fichier: " << fileInfo.filePath(); if (fileInfo.fileName()=="fichierQueJeCherche.sonExtension") { qDebug()<<"FICHIER fichierQueJeCherche.sonExtension TROUVE...................................."; cheminDuFichierQueJeVeux = fileInfo.filePath(); } } } return cheminDuFichierQueJeVeux; }
Variante¶
On peut à la place du QString cheminDuFichierQueJeVeux utiliser une variable membre. On modifiera alors comme suit :- void parcoursRecursif....
- m_variableMembre partout au lieu de QString cheminDuFichierQueJeVeux
- return; partout au lieu de return cheminDuFichierQueJeVeux;