QT遍历文件夹读取文件名

news/2024/10/22 16:20:07/

一、获取文件夹下的所有文件名

可以使用QDir类的entryList()函数获取文件夹下的所有文件名:


QDir dir("folder_path");
QStringList files = dir.entryList(QDir::Files);

Copy

其中,folder_path为文件夹的路径,files为获取到的所有文件名的列表。

如果需要获取文件夹下的所有文件(包括子文件夹中的文件),可以使用entryList()函数的重载形式:


QDir dir("folder_path");
dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
dir.setSorting(QDir::Name | QDir::DirsFirst);
QStringList files = dir.entryList();

Copy

上述代码中,setFilter()函数可以设置过滤条件,只获取文件或文件夹,并且排除.和..两个特殊目录。setSorting()函数可以设置排序条件,按照名称排序并将文件夹放在前面。最后,entryList()函数返回获取到的所有文件(包括子文件夹中的文件)的列表。

二、获取指定后缀名的所有文件名

在实际开发中,有时需要获取指定后缀名的所有文件名。可以使用QDir类的entryList()函数的过载形式实现:


QDir dir("folder_path");
QStringList filters;
filters << "*.docx" << "*.pptx" << "*.xlsx";
dir.setNameFilters(filters);
dir.setFilter(QDir::Files);
QStringList files = dir.entryList();

Copy

上述代码中,setNameFilters()函数可以设置需要筛选的后缀名,也可以同时设置多个后缀名。

三、获取文件夹下的所有子文件夹名

在某些情况下,需要获取文件夹下所有的子文件夹的名称。这个时候,可以使用QDir类的entryList()函数获取所有文件名,然后遍历文件名列表,将文件夹名称添加到一个新列表中即可。


QDir dir("folder_path");
QStringList folders;
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
QFileInfoList fileList = dir.entryInfoList();
for (int i = 0; i < fileList.size(); ++i) {QFileInfo fileInfo = fileList.at(i);folders.append(fileInfo.fileName());
}

Copy

上述代码中,首先调用setFilter()函数设置只筛选文件夹,并排除.和..目录。然后,使用entryInfoList()函数获取所有文件信息的列表,遍历列表,将文件夹名称添加到一个新列表中。

四、获取文件夹大小

有时需要获取文件夹的大小。可以使用QDir类的entryInfoList()函数获取所有文件信息列表,然后遍历列表,获取文件大小,最后累加得到文件夹大小:


qint64 getFolderSize(const QString& folderPath){QDir dir(folderPath);qint64 size = 0;QFileInfoList fileList = dir.entryInfoList(QDir::Files);for(int i=0; i

上述代码中,首先调用entryInfoList()函数获取所有文件信息列表,然后遍历列表累加得到文件夹内所有文件大小。接着,使用QDir类的entryInfoList()函数获取所有子文件夹的信息列表,递归调用getFolderSize()函数获取子文件夹大小,最后累加得到文件夹总大小。 五、获取文件夹下的所有符号链接(软链接) 有时需要获取文件夹下的所有符号链接(软链接)路径。可以使用QDir类的entryInfoList()函数获取符号链接的文件信息,然后获取其路径。 QDir dir("folder_path"); dir.setFilter(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot | QDir::System | QDir::NoSymLinks); QList list = dir.entryInfoList(); for (int i = 0; i < list.size(); i++) { QFileInfo fileInfo = list.at(i); if(fileInfo.isSymLink()) { QString linkTargetPath = fileInfo.symLinkTarget(); } } 上述代码中,首先设置QDir类的过滤条件,仅获取文件和链接(去除.和..目录),然后获取文件列表,用isSymLink()函数判断文件是否为链接,如果是,则获取其链接目标路径。 总结 本文从获取所有文件名、获取指定后缀名的所有文件名、获取文件夹下的所有子文件夹名、获取文件夹大小、获取文件夹下的所有符号链接等多个方面进行了详细的阐述,并给出了对应的代码示例。使用QDir类可以方便地实现文件操作,是Qt开发中不可或缺的部分。


http://www.ppmy.cn/news/1000585.html

相关文章

开始学习 Kafka,一文掌握基本概念|Kafka 系列 一

如果你还不了解 Kafka&#xff0c;或者也打算深入探索、系统学习&#xff0c;那么欢迎有同样目标的小伙伴可以加群交流&#xff0c;让学习之路不再孤独。 一个人可能走的很快&#xff0c;但是一群人会走的更远。&#xff08;后台回复&#xff1a;加群&#xff09; 点击上方“后…

双端冒泡排序

双端冒泡排序是对传统冒泡排序的改进&#xff0c;其主要改进在于同时从两端开始排序&#xff0c;相对于传统冒泡排序每次只从一端开始排序&#xff0c;这样可以减少排序的遍历次数。 传统冒泡排序从一端开始&#xff0c;每次将最大&#xff08;或最小&#xff09;的元素冒泡到…

spring-cache框架使用笔记

spring-cache框架使用笔记 什么是spring-cache框架 spring-cache是spring框架中的一个缓存抽象层&#xff0c; 它提供了一种简便的方式来集成不同的底层缓存实现&#xff0c; 如内存缓存(concurrentMap/ehcache/caffeine)/分布式缓存(redis/couchbase)等 它简化了在app中使用…

免费的ssl证书

免费的SSL证书对于保证网站的安全性和信任度来说是非常重要的。虽然有些人可能会认为&#xff0c;免费的SSL证书可能不如付费的证书有效&#xff0c;但事实并非如此。 首先&#xff0c;免费的SSL证书同样能够为网站提供加密与解密的功能。这意味着所有的数据将会在传输过程中被…

JavaScript 面向对象

一、对象 1.新建一个对象 // An object literal with two key-value pairs let spaceship {Fuel Type: diesel,color: silver }; We separate each key-value pair in an object literal with a comma (,) Keys are strings, but when we have a key that does not have any…

【云原生】Kubernetes中deployment是什么?

目录 Deployments 更新 Deployment 回滚 Deployment 缩放 Deployment Deployment 状态 清理策略 金丝雀部署 编写 Deployment 规约 Deployments 一个 Deployment 为 Pod 和 ReplicaSet 提供声明式的更新能力。 你负责描述 Deployment 中的 目标状态&#xff0c;而 De…

C# 文件读写 程序

//读写文件 public class ReadWriteFile { public static List<string> ReadFile(string path) { try { using (FileStream fileStream new FileStream(path, FileMode.Open, FileAccess.Read)) { Lis…

【Java多线程学习5】什么是悲观锁,什么是乐观锁?如何实现乐观锁、乐观锁存在哪些问题

【Java多线程学习5】什么是悲观锁&#xff0c;什么是乐观锁&#xff1f;如何实现乐观锁、乐观锁存在哪些问题 一、什么是悲观锁 概述 悲观锁总是假设最坏的情况&#xff0c;认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改)&#xff0c;所以每次在获取资源操作…