分享一个Qt中删除文件夹的函数(非递归实现)
2012-06-03 21:16
477 查看
/*递归删除文件夹,即使里面有内容 ** **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");
该函数可以删除文件夹,即使文件夹中有内容:子文件夹或文件,可谓“遇神杀神,遇佛杀佛”版~
相关文章推荐
- Lua脚本实现递归删除一个文件夹
- Lua中实现递归删除一个文件夹
- PHP开发小技巧⑤—实现实现递归删除文件夹
- 【C语言】【面试题】【笔试题】编写一个函数实现n^k,使用递归实现
- 删除文件,若文件所在目录下只有一个文件则递归删除文件所在目录,直到删除的所在目录下有两个文件或者文件夹
- 在lua中递归删除一个文件夹
- 编写一个函数实现n^k,使用递归实现
- 利用rmdir()函数实现PHP递归删除目录
- asp结合fso实现文件或文件夹创建删除等操作的函数
- 2.编写一个函数实现n^k,使用递归实现
- 编写一个函数reverse_string(char * string)(递归实现) 实现:将参数字符串中的字符反向排列。
- JavaScript创建一个add()函数可实现,可变参数和递归调用
- 分享一个用递归实现的 strlen函数
- .编写一个函数实现n^k,使用递归实现
- 试编写一个函数,返回一颗给定二叉树在中序遍历下的最后一个节点(分别用递归和非递归实现)
- 编写一个函数实现n^k,使用递归实现
- 编写一个函数实现n^k,使用递归实现
- C++实现:把一个文件夹里的冗余文件(.txt)删除
- Shell脚本实现递归删除空文件夹
- php实例分享之通过递归实现删除目录下的所有文件详解