Rekursives Ordnerdurchsuchen mit Qt
-
Hi,
ich hab ein problem...
ich will mit Qt 2.3 Windows Non-Commercial Version einen Verzeichnisbaum rekursiv durchsuchen und alle dateien in einem Textfeld anzeigen lassen (txtLog).
beim ersten verzeichnis funktioniert das auch wunderbar, aber sobald ich in einen unterordner wechsel, und damit dieselbe funktion mit neuen parametern aufrufe erhalte ich die fehlermeldung "QDir::Cannot Read Directory x"
hier mein codevoid recursiveSearch(QDir *directory, QString filter) { txtLog->append("search in directory: "+directory->absPath() ); //get file-list directory->setNameFilter(filter); directory->setFilter(QDir::Files); QStringList fileList(directory->entryList()); fileList.sort(); //get dir-list directory->setNameFilter("*"); directory->setFilter(QDir::Dirs); QStringList dirList(directory->entryList()); dirList.sort(); //for each file for(QStringList::Iterator fileIterator = fileList.begin(); fileIterator != fileList.end(); fileIterator++) { QFile *curFile = new QFile(*fileIterator); txtLog->append("New File found: "+curFile->name() ); } //for each directory for(QStringList::Iterator dirIterator = dirList.begin(); dirIterator != dirList.end(); dirIterator++) { QDir *curDir = new QDir(*dirIterator); //"." and ".." are no valid subdirs -> filter them if( curDir->path().compare(".") == 0 ) continue; if( curDir->path().compare("..") == 0 ) continue; //subdir found so search there if( curDir->exists() ) recursiveSearch(curDir, filter); } }
kann mir jemand helfen?
danke im voraus
Errraddicator
-
Ohne jetz deinen Source genau angesehen zu haben:
Du läuftst 2mal einen List durch. Warum?
Wenn du ein Dir öffnest und einen Eintrag bekommst dann checke ob es ein Dir oder ein File ist. Ist es ein DIR dann Recurs. Ist es ein File dann weiter.
QFileInfo hilft dir da weiter