qt轻便实现递归目录遍历

首先是声明部分

static void searchFilesInPath(QString pathName,QStringList& Files,QDir::Filter filters = QDir::AllEntries);//深度遍历,递归

然后是实现

void FileCopy::searchFilesInPath(QString pathName,QStringList& Files,QDir::Filter filters)
{
	QDir thisPath(pathName);
	QStringList tempStrList;
	tempStrList=thisPath.entryList(filters,QDir::DirsFirst);
	tempStrList.removeAt(1);//删除“..”
	tempStrList.removeAt(0);//删除“.”

	QString tempStr;
	for(int i=0;i<tempStrList.count();i++)
	{
		tempStr = pathName+"/"+tempStrList.at(i);
		tempStrList.replace(i,tempStr);
	}

	Files=Files+tempStrList;//添加进列表

	QStringList tempDirList;
	tempDirList=thisPath.entryList(QDir::Dirs,QDir::DirsFirst);
	tempDirList.removeAt(1);//删除“..”
	tempDirList.removeAt(0);//删除“.”
	//子目录递归
	for(int i=0;i<tempDirList.count();i++)
	{
		searchFilesInPath(pathName+"/"+tempDirList.at(i),Files,filters);
	}
}
大致思路是先把本目录的信息存进字串表中,然后进入下一级,再下一级如此类推

调用部分

QStringList tempStrList;
searchFilesInPath(strSourcePath,tempStrList);
	
for(int i=0;i<tempStrList.count();i++)
{
	qDebug()<<tempStrList.at(i);
}

显示效果如下:

"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/goto" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/1_7594.jpg" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/3666689_980x1200_0.png" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/translate.txt" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/texture" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/傅.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/傅.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/击甸.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/击甸.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/努反.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/努反.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/合.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/合.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/吩靛.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/吩靛.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/咀胶.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/咀胶.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/唱捞橇.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/唱捞橇.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/啊靛.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/啊靛.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/墨鸥唱.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/墨鸥唱.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/墨鸥福.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/墨鸥福.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/夸沥狼蓖.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/夸沥狼蓖.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/宏肺摹.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/宏肺摹.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/官捞棵赴.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/官捞棵赴.spr" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManeger/test/data/sprite/酒捞袍/家靛.act" 
"E:/workspace/ROClinetFileManeger/ROClinetFileManege
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值