概念
在Qt中,查找遍历目录下的文件,主要涉及到QDir,QFileInfo,QFileInfoList三个类。
QDir是专门提供访问目录结构和内容的类,给定一个路径即可得到访问的对象句柄。
QFileInfo类用于获取指定目录的基本信息, 目录如果包含文件名则可获得文件的基本信息。
QFileInfoList用于获得指定目录下所有文件/文件夹的基本信息,QFileInfoList其实是typedef创建的:typedef QFileInfoList QList;
参考链接
基本操作的函数

  • QFileInfoList QDir::entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort) const
  • QFileInfo::QFileInfo(const QString & file)
  • QString QFileInfo::path() const
  • QString QFileInfo::filePath() const
  • QString QFileInfo::baseName() const
  • QString QFileInfo::fileName() const
  • QString QFileInfo::suffix() const
  • bool QFileInfo::exists() const
  • static bool QFileInfo::exists(const QString & file)

释义

  • 用于QDir类返回QFileInfoList类型对象。两个枚举参数filters 和sort 分别用来描述QDir目录下的文件筛选方式和文件排序方式。例如entryInfoList(QDir::Filter::Files, QDir::SortFlag::Name)表示只列出文件(不包含文件夹)、这些文件按名称排序。
  • QFileInfo的构造函数,可用来以QString方式指定目录(或包含文件名的地址)。
  • 返回文件的路径(不包含文件名)。
  • 返回包含文件名的文件路径。
  • 返回目录文件夹名(不包含地址)或返回文件名(不包含地址和文件后缀名)。
  • 返回目录文件夹名(不包含地址)或返回文件名(不包含地址)。
  • 返回文件后缀名。
  • 判断文件是否存在,存在返回true,否则返回false。
  • 判断文件是否存在,静态方法。

例子
获取文件夹下所有的文件名称:

    QDir tmpDir(m_strImgDir);QFileInfoList listInfo = tmpDir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name);if(listInfo.isEmpty()) {qWarning() << "AE Dir is Empty!";return ;}foreach(QFileInfo strFileInfo, listInfo) {m_strListImg.append(strFileInfo.filePath());}

目录是否存在:

 QDir d( "example" );                        // “./example”if ( !d.exists() )qWarning( "Cannot find the example directory" );

含过滤器的构造函数

QDir::QDir ( const QString & path, const QString & nameFilter = QString::null, int sortSpec = Name | IgnoreCase, int filterSpec = All )
构造一个路径为path、名称过滤器为nameFilter并且属性过滤器为filterSpec的QDir。它也使用sortSpec来排列名称。
默认的nameFilter是一个空字符串,不包含任何东西,默认的filterSpec是All,也就是说也不包含任何东西。默认的sortSpec是Name|IgnoreCase,也就是说不区分大小写按名称排序。

添加过滤器

QStringList filters;
filters << "*.cpp"<<"*.h";//设置过滤类型
dir.setNameFilters(filters);//设置文件名的过滤

找到指定后缀的文件
参考链接

QDir dir(sComFilePath);if (!dir.exists()) {return -1;}//取到所有的文件和文件名,但是去掉.和..的文件夹(这是QT默认有的)dir.setFilter(QDir::Dirs|QDir::Files|QDir::NoDotAndDotDot);//文件夹优先dir.setSorting(QDir::DirsFirst);//转化成一个listQFileInfoList list = dir.entryInfoList();if(list.size()< 1 ) {return -1;}int i=0;static int k=0;//递归算法的核心部分do{QFileInfo fileInfo = list.at(i);QString tt = fileInfo.fileName();//如果是文件夹,递归bool bisDir = fileInfo.isDir();if(bisDir) {Findexe(fileInfo.filePath());}else{bool isacf = fileInfo.fileName().endsWith(".acf");if (isacf == true) {QString afcfile = fileInfo.filePath();QFile file( "./game_acf.txt" );if ( file.open( QIODevice::ReadWrite | QIODevice::Append )){if(k>0){file.write("\n");}k++;file.write(afcfile.toUtf8());file.close();}}}//end elsei++;} while(i < list.size());return 1;

Qt_QDir_常见的操作相关推荐

  1. python数值运算实例_Python矩阵常见运算操作实例总结

    本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...

  2. JavaScript常见集合操作

    JavaScript常见集合操作 集合的遍历 FOR循环(效率最高) 优点:JavaScript最普遍的for循环,执行效率最高 缺点:无法遍历对象 for(let i=0;i<array.le ...

  3. python列表按照指定顺序排序-Python常见排序操作示例【字典、列表、指定元素等】...

    本文实例讲述了Python常见排序操作.分享给大家供大家参考,具体如下: 字典排序 按value排序 d1 = {"name":"python","b ...

  4. python矩阵运算_Python矩阵常见运算操作实例总结

    本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...

  5. python查询oracle数据库_python针对Oracle常见查询操作实例分析

    本文实例讲述了python针对Oracle常见查询操作.分享给大家供大家参考,具体如下: 1.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: ...

  6. java基础—Map集合的常见方法操作(java集合八)

    Map集合的常见方法操作 Map集合中的元素取出并打印的三种方式 import java.util.Collection; import java.util.HashMap; import java. ...

  7. Windows下常用的100个CMD指令以及常见的操作

    为什么80%的码农都做不了架构师?>>>    Windows下常用的100个CMD指令以及常见的操作 常用的100个CMD指令 gpedit.msc-–组策略 2. sndrec3 ...

  8. python中os模块详解_Python OS模块(常见文件操作示例)

    1 Python 常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径 , 返回文件名 6. dirname() 去掉文件名 , ...

  9. python如何实时查询oracle_python针对Oracle常见查询操作实例分析

    本文实例讲述了python针对Oracle常见查询操作.分享给大家供大家参考,具体如下: 1.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: ...

最新文章

  1. NSThread的使用
  2. 在java 8 stream表达式中实现if/else逻辑
  3. 给自己的Blog 上添加定制的搜索引擎
  4. Spring AOP(通知、连接点、切点、切面)
  5. bv值是什么意思_BV出爆款了,今年买包怎能不盘一只“云朵”?
  6. VMware linux 虚拟机(ubuntu18.04) 安装TL-WDN5200H 2.0网卡驱动 完美使用(适用于vmware无法桥接网络使用此方法)
  7. python面试必备-基础篇
  8. C++socket编程(三):3.1 TCP/IP协议特点
  9. mysql 存储过程参数集合_MySQL存储过程
  10. 20210725:FLAC刻录音乐CD教程01-下载安装Nero打补丁
  11. Java主要学习哪些内容
  12. 极光开发者周刊【No.0827】
  13. VBA判断win操作系统是32位还是64位
  14. 数据库管理工具的使用
  15. 【人工智能】群智能算法
  16. SVG实现圆形进度条
  17. 博客系统程序(页面设计)
  18. 最简单的共享列表服务器KissLists
  19. JAVA IO流(3)
  20. 百度午夜蓝地图瓦片数据爬取--java代码(地图数据篇.15)

热门文章

  1. 【转】CentOs中Apache开启rewrite模块详解
  2. 简易VR眼镜:是玩具还是工具?
  3. virsh 基于xml create VMs虚机
  4. 利用form的“accept-charset”在不同编码的页面间提交表单
  5. 几种关系型数据库比较
  6. 11.17 dfs poj1979 Red and Black
  7. 每天干的啥?(2017.6)
  8. SqlServer数据冗余的问题和解决
  9. Fatal error: Class 'ZipArchive' not found的解决办法
  10. Python数据类型之元祖