qt获取文件夹内和子文件夹所有图片和txt文件的名称,把图片和txt文件名称分别存起来,并保存每个子文件夹的第一张图片和最后一张图片名字,并且写出具体代码
时间: 2023-03-02 14:02:46 浏览: 139
QT文件查询,查询单个文件和文件夹下所有文件行数
以下是使用Qt编写的获取文件夹内和子文件夹所有图片和txt文件的名称,并将图片和txt文件名称分别存储,并保存每个子文件夹的第一张图片和最后一张图片名字的代码:
```cpp
#include <QCoreApplication>
#include <QDir>
#include <QFileInfo>
#include <QImage>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QDir dir("/path/to/folder"); // 替换为要获取的文件夹路径
QStringList filters;
filters << "*.jpg" << "*.jpeg" << "*.png" << "*.bmp" << "*.gif" << "*.txt";
dir.setNameFilters(filters);
dir.setFilter(QDir::Files | QDir::NoDotAndDotDot | QDir::NoSymLinks);
QStringList imageFiles;
QStringList txtFiles;
QMap<QString, QStringList> subfolders;
QStringList fileNames = dir.entryList();
foreach (QString fileName, fileNames) {
QString filePath = dir.absoluteFilePath(fileName);
QFileInfo fileInfo(filePath);
QString suffix = fileInfo.suffix().toLower();
if (suffix == "jpg" || suffix == "jpeg" || suffix == "png" || suffix == "bmp" || suffix == "gif") {
imageFiles.append(fileName);
} else if (suffix == "txt") {
txtFiles.append(fileName);
}
// 保存每个子文件夹的第一张图片和最后一张图片名字
QString subfolder = fileInfo.path().remove(dir.path() + "/");
if (subfolders.contains(subfolder)) {
subfolders[subfolder].append(fileName);
} else {
QStringList fileList;
fileList.append(fileName);
subfolders.insert(subfolder, fileList);
}
}
// 输出结果
qDebug() << "Image files:";
qDebug() << imageFiles;
qDebug() << "Text files:";
qDebug() << txtFiles;
qDebug() << "Subfolders:";
QMapIterator<QString, QStringList> iter(subfolders);
while (iter.hasNext()) {
iter.next();
QString subfolder = iter.key();
QStringList fileList = iter.value();
qDebug() << subfolder;
if (fileList.size() >= 2) {
qDebug() << "First image: " << fileList.first();
qDebug() << "Last image: " << fileList.last();
}
}
return a.exec();
}
```
这个程序首先创建一个QDir对象,用于表示要搜索的文件夹。然后,设置了过滤器,只搜索图片文件和txt文件,并且排除"."和".."目录和符号链接。然后,获取文件夹中的所有文件的名称,并对每个文件进行处理,根据文件扩展名将其添加到imageFiles或txtFiles列表中。还使用QMap保存每个子文件夹的第一张图片和最后一张图片的名称,以子文件夹路径作为键,图片文件名列表作为值。
最后,程序输出了结果。您可以将"qDebug()"替换为适当的输出方法(例如,将文件名写入文本文件),以将结果保存到文件中。
阅读全文