QT遍历文件夹读取文件名

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

可以使用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开发中不可或缺的部分。

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值