Qt统计某一目录下的某一类文件(同一种扩展名)的方法

本文介绍了一个C++ Qt程序,该程序能有效筛选指定目录下特定后缀的文件,并将其名称存入Std::vector容器。通过示例展示了如何使用此函数来获取一个目录下所有.mp4文件的列表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文受了https://blog.youkuaiyun.com/Zzhouzhou237/article/details/73613561 的启发

下面的函数实现了统计某一类文件,然后将这些文件的名称放入容器Std::vector<QString>中:

void GetFileNameList( QString qstrSuffix, QDir Dir ,std::vector<QString> &FileList)
{
    QFileInfoList subFileList = Dir.entryInfoList(QDir::Files|QDir::CaseSensitive);//过滤条件为只限文件并区分大小写

    for (int i = 0;i < subFileList.size(); i++)
    {
        QString suffix = subFileList[i].suffix();//获取后缀名
        if (suffix.compare(qstrSuffix) == 0)
        {
            //subFileList[i].baseName() + QString(".%1").arg(qstrSuffix) is equivalent to QFileInnfo::fileName()
            FileList.push_back(subFileList[i].baseName() + QString(".%1").arg(qstrSuffix));//a baseName is the base name of the file without the path
        }
    }
}

 以下是使用示例:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDir>
#include <QFile>
#include <vector>

void GetFileNameList( QString, QDir Dir ,std::vector<QString> &FileList);

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

}

MainWindow::~MainWindow()
{
    delete ui;
}

void GetFileNameList( QString qstrSuffix, QDir Dir ,std::vector<QString> &FileList)
{
    QFileInfoList subFileList = Dir.entryInfoList(QDir::Files|QDir::CaseSensitive);//过滤条件为只限文件并区分大小写

    for (int i = 0;i < subFileList.size(); i++)
    {
        QString suffix = subFileList[i].suffix();//获取后缀名
        if (suffix.compare(qstrSuffix) == 0)
        {
            //subFileList[i].baseName() + QString(".%1").arg(qstrSuffix) is equivalent to QFileInnfo::fileName()
            FileList.push_back(subFileList[i].baseName() + QString(".%1").arg(qstrSuffix));//a baseName is the base name of the file without the path
        }
    }
}

void MainWindow::on_pushButton_clicked()
{
    QString qstrOutput;
    std::vector<QString> fileLst;
    GetFileNameList(QString("mp4"), QDir("C:\\ziji\\youtube"), fileLst);
    std::vector<QString>::iterator itr;
    for(itr = fileLst.begin();itr != fileLst.end(); itr++)
    {
        qstrOutput += *itr + QString("\r\n");
    }
    ui->textEdit->setText(qstrOutput);
}

效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值