Advertisement

QT获取文件夹下文件名称

阅读量:

1、头文件声明

复制代码
    #include <QDir>

2、主程序

复制代码
 /********************************************************

    
 输入:文件路径;保存全部文件名的容器
    
 /********************************************************/
    
 void findFile(const QString& path, std::vector<QString>& fileNames)
    
 {
    
     QDir dir(path);
    
     if(!dir.exists())
    
     {
    
     return;
    
     }
    
  
    
     //获取filePath下所有文件夹和文件
    
     dir.setFilter(QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot);//文件夹|文件|不包含./和../
    
  
    
     //排序文件夹优先
    
     dir.setSorting(QDir::DirsFirst);
    
  
    
     //获取文件夹下所有文件(文件夹+文件)
    
     QFileInfoList list = dir.entryInfoList();
    
  
    
     /**********直接获取带文件后缀的文件;如果使用,则只搜索当前文件夹下的文件*************
    
     QStringList filer;
    
     filer << "*.jpg" <<"*.bmp";//设定需要的文件类型(*为所有类型)
    
     QFileInfoList list = dir.entryInfoList(filer);
    
     //QList<QFileInfo> *list= new QList<QFileInfo>(dir.entryInfoList(filter));
    
     /*******************************************************************************/
    
     
    
     /**********************只获取文件,只搜索当前文件夹下的文件************************
    
     QStringList list= dir.entryList(filer, QDir::Files | QDir::NoDotAndDotDot);
    
     /*******************************************************************************/
    
     
    
     if(list.size() == 0)
    
     {
    
     return;
    
     }
    
  
    
     //遍历
    
     for(int i = 0; i < list.size(); i++)
    
     {
    
     QFileInfo fileInfo = list.at(i);
    
  
    
     if(fileInfo.isDir())//判断是否为文件夹
    
     {
    
         findFile(fileInfo.filePath(), fileNames);//递归开始
    
     }
    
     else
    
     {
    
         if(fileInfo.suffix() == "bmp")//设定后缀
    
         {
    
             fileNames.emplace_back(list.at(i).fileName());//保存全部文件名
    
             //fileNames.emplace_back(list.at(i).filePath());//保存全部文件路径+文件名
    
         }
    
     }
    
     }
    
 }

将文件夹内的所有文档存储到一个vector容器中;
通过遍历该容器能够获取所需的结果;
其中文件名采用QString类型;
若需将其转换为std::string类型,则可以通过调用toStdString()函数实现转换。

复制代码
    toStdString

3、结果

全部评论 (0)

还没有任何评论哟~