Qt_QDir_常见的操作
概念
在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_常见的操作相关推荐
- python数值运算实例_Python矩阵常见运算操作实例总结
本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...
- JavaScript常见集合操作
JavaScript常见集合操作 集合的遍历 FOR循环(效率最高) 优点:JavaScript最普遍的for循环,执行效率最高 缺点:无法遍历对象 for(let i=0;i<array.le ...
- python列表按照指定顺序排序-Python常见排序操作示例【字典、列表、指定元素等】...
本文实例讲述了Python常见排序操作.分享给大家供大家参考,具体如下: 字典排序 按value排序 d1 = {"name":"python","b ...
- python矩阵运算_Python矩阵常见运算操作实例总结
本文实例讲述了Python矩阵常见运算操作.分享给大家供大家参考,具体如下: python的numpy库提供矩阵运算的功能,因此我们在需要矩阵运算的时候,需要导入numpy的包. 一.numpy的导入 ...
- python查询oracle数据库_python针对Oracle常见查询操作实例分析
本文实例讲述了python针对Oracle常见查询操作.分享给大家供大家参考,具体如下: 1.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: ...
- java基础—Map集合的常见方法操作(java集合八)
Map集合的常见方法操作 Map集合中的元素取出并打印的三种方式 import java.util.Collection; import java.util.HashMap; import java. ...
- Windows下常用的100个CMD指令以及常见的操作
为什么80%的码农都做不了架构师?>>> Windows下常用的100个CMD指令以及常见的操作 常用的100个CMD指令 gpedit.msc-–组策略 2. sndrec3 ...
- python中os模块详解_Python OS模块(常见文件操作示例)
1 Python 常见文件操作示例 2. 3. os.path 模块中的路径名访问函数 4. 分隔 5. basename() 去掉目录路径 , 返回文件名 6. dirname() 去掉文件名 , ...
- python如何实时查询oracle_python针对Oracle常见查询操作实例分析
本文实例讲述了python针对Oracle常见查询操作.分享给大家供大家参考,具体如下: 1.子查询(难): 当进行查询的时候,发现需要的数据信息不明确,需要先通过另一个查询得到, 此查询称为子查询: ...
最新文章
- NSThread的使用
- 在java 8 stream表达式中实现if/else逻辑
- 给自己的Blog 上添加定制的搜索引擎
- Spring AOP(通知、连接点、切点、切面)
- bv值是什么意思_BV出爆款了,今年买包怎能不盘一只“云朵”?
- VMware linux 虚拟机(ubuntu18.04) 安装TL-WDN5200H 2.0网卡驱动 完美使用(适用于vmware无法桥接网络使用此方法)
- python面试必备-基础篇
- C++socket编程(三):3.1 TCP/IP协议特点
- mysql 存储过程参数集合_MySQL存储过程
- 20210725:FLAC刻录音乐CD教程01-下载安装Nero打补丁
- Java主要学习哪些内容
- 极光开发者周刊【No.0827】
- VBA判断win操作系统是32位还是64位
- 数据库管理工具的使用
- 【人工智能】群智能算法
- SVG实现圆形进度条
- 博客系统程序(页面设计)
- 最简单的共享列表服务器KissLists
- JAVA IO流(3)
- 百度午夜蓝地图瓦片数据爬取--java代码(地图数据篇.15)