分享一个Qt中删除文件夹的函数(非递归实现)

来源:互联网 发布:python图片处理模块 编辑:程序博客网 时间:2024/05/19 17:24

/*递归删除文件夹,即使里面有内容****dir :文件夹的名字,绝对路径和相对路径均可****返回值 :成功后返回true;否则返回false*/bool removeDirWithContent(const QString &dirName){static QVector<QString> dirNames;static QString funcErrMsg="删除[%1]失败.";static QString funcInfFndMsg="发现[%1].";static QString funcInfDelMsg="删除[%1]成功.";QDir dir;QFileInfoList filst;QFileInfoList::iterator curFi;//初始化dirNames.clear();if(dir.exists()){dirNames<<dirName;}else{return true;}//遍历各级文件夹,并将这些文件夹中的文件删除for(int i=0;i<dirNames.size();++i){dir.setPath(dirNames[i]);filst=dir.entryInfoList(QDir::Dirs|QDir::Files|QDir::Readable|QDir::Writable|QDir::Hidden|QDir::NoDotAndDotDot,QDir::Name);if(filst.size()>0){curFi=filst.begin();while(curFi!=filst.end()){ //遇到文件夹,则添加至文件夹列表dirs尾部if(curFi->isDir()){dirNames.push_back(curFi->filePath());}else if(curFi->isFile()){//遇到文件,则删除之if(!dir.remove(curFi->fileName())){return false;}}curFi++;}//end of while}}//删除文件夹for(int i=dirNames.size()-1;i>=0;--i){dir.setPath(dirNames[i]);if(!dir.rmdir(".")){return false;}}return true;}

使用方法:

bool b;b=removeDirWithContent("c:/a/b");


该函数可以删除文件夹,即使文件夹中有内容:子文件夹或文件,可谓“遇神杀神,遇佛杀佛”版~

	
				
		
原创粉丝点击