【QT】遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名

【QT】遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名

前言:

需要在特定目录或磁盘下查找特定文件

一、筛选目录

(一)单一目录下遍历,筛选特定文件

QDir dir("./SaveFiles");
QFileInfoList list = dir.entryInfoList();

(二)设备所有磁盘中遍历

QFileInfoList DirInfoList = QDir::drives();

二、遍历目录和文件

在容器List中遍历每个文件信息(QFileInfo fileInfo),文件信息包含:

  • 文件路径fileInfo.filePath();

  • 文件全名称fileInfo.fileName();

  • 文件前缀fileInfo.baseName();

  • 文件后缀fileInfo.suffix();

  • 文件是否存在fileInfo.exists();

  • 文件大小fileInfo.size();

  • 是否是文件fileInfo.isFile();

  • 是否是目录fileInfo.isDir();

  • 是否是连接符fileinfo.isSymLink()

/
  typedef struct fileNamePath
    {
	   QString strFileName;
	   QString strFilePath;
    }sfileNamePath;
//.cpp///
    qint64 beginTime =  ui->beginDateTimeEdit->dateTime().toTime_t();//先将QDateTime时间转UTC时间,在计算秒数
    qint64 endTime=  ui->endDateTimeEdit->dateTime().toTime_t();
    QDir dir("./SavedFiles");
    dir.setFilter(QDir::Files);
    QStringList filters;
    filters<<"*txt"; //遍历筛选特定文件(*.txt)
    dir.setNameFilters(filters);
    QFileInfoList list = dir.entryInfoList();
    QStringList filelist;
    QList<QStringList>searchFileList_list;//创建容器添加文件的名称、创建时间、大小、类型
    foreach(QFileInfo fileinfo,list)
    {
        int index_p = fileinfo.fileName().indexOf(".");
        QString fileName = fileinfo.fileName().left(index_p);//获取文件名前缀
        filelist <<fileinfo.fileName() <<fileinfo.suffix();
        qint64 fileTime = QDateTime::fromString(fileName,"yyyy-MM-dd hh-mm-ss").toTime_t();//QString转QdateTime
        if(fileTime >=beginTime && fileTime <= endTime)
        {
            QStringList fileInforList;
            fileInforList.append(fileName);
            QString createTime = fileinfo.created().toString("yyyy/MM/dd hh:mm:ss");//文件时间
            fileInforList.append(createTime);
            QString kind = fileinfo.suffix();//文件类型
            fileInforList.append(kind);
            int size;
            QString sizeStr;
            size = int((fileinfo.size() + 1023) /1024);//文件大小
            sizeStr = QString::number(size,'g',2) +"KB";
            fileInforList.append(sizeStr);
            searchFileList_list.append(fileInforList);

        }
    }

锦上添花:

QStringList fileter;
fileter << "*.um" << "*.stl";
QFileInfoList fileList = dir.entryInfoList(fileter, QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks);

参考链接:
https://www.codetd.com/article/4663320

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值