Projet

Général

Profil

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;
Redmine Appliance - Powered by TurnKey Linux