/************************************** * Рекурсивный перебор файлов и папок * **************************************/ QStringList allFiles1; // Хранилище общего списка файлов void getAllFiles1 (QString dir){ QString deb = "Check dir "; deb.append(dir); allFiles1 << deb; QStringList myList; // Список файлов этой папки QDir myDirectory = QDir(dir); // Текущая папка myDirectory.setFilter(QDir::Files); // Фильтр - файлы myList = myDirectory.entryList(); // Получить список for (int i = 0; i < myList.count(); ++i){ allFiles1 << myDirectory.absoluteFilePath(myList[i]); } QStringList myList1; // Список папок этой папки QDir myDirectory1 = QDir(dir); // Текущая папка myDirectory1.setFilter(QDir::Dirs); // Фильтр - папки myList1 = myDirectory1.entryList(); // Получить список for (int i = 0; i < myList1.count(); ++i){ QDir myDir = QDir(myList1[i]); if (myList1[i] == "." || myList1[i] == ".."){} // Если текущая или папка-владелец, то ничего не делаем else { QString t = "Enter directory "; t.append(myDir.absolutePath()); allFiles1 << t; getAllFiles1(myDir.absolutePath()); allFiles1 << "End check dir"; } myDir = NULL; } myDirectory = NULL; myDirectory1 = NULL; myList.clear(); myList1.clear(); }
#include <qstringlist.h>#include <qdir.h>#include <stdio.h>QStringList getDirFiles( const QString& dirName ){ QDir dir( dirName ); if ( !dir.exists() ) qFatal( "No such directory : %s", dir.dirName().latin1() ); QStringList fileNames; QStringList fileList = dir.entryList( QDir::Files ); for ( QStringList::Iterator fit = fileList.begin(); fit != fileList.end(); ++fit ) fileNames.append( dir.absPath() + "/" + *fit ); QStringList dirList = dir.entryList( QDir::Dirs ); dirList.remove( "." ); dirList.remove( ".." ); for ( QStringList::Iterator dit = dirList.begin(); dit != dirList.end(); ++dit ) { QDir curDir = dir; curDir.cd( *dit ); QStringList curList = getDirFiles( curDir.absPath() ); for ( QStringList::Iterator it = curList.begin(); it != curList.end(); ++it ) fileNames.append( QFileInfo(*it).absFilePath() ); } return fileNames; }int main( int argc, char** argv ){ QFileInfo fi( argv[0] ); QString startDir = fi.dirPath( true ); if ( argc > 1 ) startDir = QString( argv[1] ); QStringList allFiles; allFiles = getDirFiles( startDir ); printf( "All Files : \n%s", allFiles.join("\n").latin1() ); return 0;}