递归算法在QT中的实现(QT遍历文件夹)

头文件:

#include <QDir> 
#include <QFile> 
#include <QString>

示例程序:

//递归遍历文件夹,找到所有的dll文件,调用registerComFile(QString dllfilepath)函数
//sComFilePath:要遍历的文件夹的文件名
int PSM_ComRegister::searchDllFile(const QString& sComFilePath){

	QDir dir(sComFilePath);
	if (!dir.exists()) {
		return -1;
	}
	
  //取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)
	dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);
	
	//文件夹优先
	dir.setSorting(QDir::DirsFirst);
	
	//转化成一个list
	QFileInfoList list = dir.entryInfoList();
	if(list.size()< 1 ) {
		return -1;
	}
	int i=0;
	
	//递归算法的核心部分
	do{
		QFileInfo fileInfo = list.at(i);
		QString tt = fileInfo.fileName();

		//如果是文件夹,递归
		bool bisDir = fileInfo.isDir();
		if(bisDir) {
			searchDllFile(fileInfo.filePath());
		}
		else{
			bool isDll = fileInfo.fileName().endsWith(".dll");
			if (isDll == true) {
				registerComFile(fileInfo.filePath());
			}
		}//end else
		i++;
	} while(i < list.size());
}

    原文作者:递归算法
    原文地址: https://blog.csdn.net/ymc0329/article/details/6710862
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞