递归算法在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());
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值