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

来源:互联网 发布:网络销售公司有些什么 编辑:程序博客网 时间:2024/05/28 09:33
    /*递归删除文件夹,即使里面有内容     **     **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");