Qt递归遍历文件和文件夹

来源:互联网 发布:尤伦斯艺术商店 淘宝 编辑:程序博客网 时间:2024/05/18 18:02
//递归遍历文件夹,找到所有的文件//_filePath:要遍历的文件夹的文件名int FindFile(const QString& _filePath){    QDir dir(_filePath);    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);        //如果是文件夹,递归        bool bisDir = fileInfo.isDir();        if(bisDir) {            FindFile(fileInfo.filePath());        }        else{            //bool isDll = fileInfo.fileName().endsWith(".dll");            qDebug() << fileInfo.filePath() << ":" <<fileInfo.fileName();        }//end else        i++;    } while(i < list.size());}



int FindFile(const QString& _filePath)  {      QDir dir(_filePath);      if (!dir.exists()) {          return -1;      }      //取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)      dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);        //文件夹优先      dir.setSorting(QDir::DirsFirst);        //转化成一个list      QFileInfoList list = dir.entryInfoList();      QStringList infolist = dir.entryList(QDir::Files | QDir::NoDotAndDotDot);      if(list.size()< 1 ) {          return -1;      }      int i=0;        //递归算法的核心部分      do{          QFileInfo fileInfo = list.at(i);          //如果是文件夹,递归          bool bisDir = fileInfo.isDir();          if(bisDir) {              FindFile(fileInfo.filePath());          }          else{              for(int m = 0; m <infolist.size(); m++) {                                  //这里是获取当前要处理的文件名                  qDebug() << infolist.at(m);              }              break;          }//end else          i++;      } while(i < list.size());  }