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);

        }
    }


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值