【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转QdateTimeif(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);
参考链接:
/article/4663320