在Qt中,可以使用QDir
类来递归遍历文件夹并返回所有文件。以下是一个示例程序,展示如何实现这一功能:
#include <QCoreApplication>
#include <QDir>
#include <QStringList>
#include <QFileInfoList>
#include <iostream>
void listFiles(const QString& path, QStringList& fileList) {
QDir dir(path);
// 获取当前目录的所有文件和子目录
QFileInfoList entries = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries);
for (const QFileInfo& entry : entries) {
if (entry.isDir()) {
// 如果是目录,递归调用
listFiles(entry.absoluteFilePath(), fileList);
} else {
// 如果是文件,将其路径添加到列表中
fileList.append(entry.absoluteFilePath());
}
}
}
int main(int argc, char *argv[]) {
QCoreApplication a(argc, argv);
QString folderPath = "你要遍历的文件夹路径"; // 替换为你的文件夹路径
QStringList allFiles;
listFiles(folderPath, allFiles);
std::cout << "所有文件:" << std::endl;
for (const QString &file : allFiles) {
std::cout << file.toStdString() << std::endl; // 输出所有找到的文件
}
return a.exec();
}
代码解释:
listFiles函数:
- 输入参数为一个路径字符串和一个用于存储结果的
QStringList
。 - 使用
QDir
读取指定路径下的所有条目(包括文件和子目录)。 - 对于每个条目,如果它是一个目录,则递归调用
listFiles()
;如果是文件,则将其完整路径添加到结果列表中。
- 输入参数为一个路径字符串和一个用于存储结果的
main函数:
- 初始化应用程序并定义需要遍历的目标文件夹路径。
- 调用
listFiles()
函数,并传入目标路径和空的字符串列表以存储结果。 - 最后输出找到的所有文件路径。
使用说明:
- 将
"你要遍历的文件夹路径"
替换为实际需要遍历的目录。 - 编译并运行该程序,你会看到控制台输出该目录及其子目录下的所有文件名。
这个方法可以很方便地获取特定目录中的所有文件。如果有其他问题,请告诉我!
内容由零声教学AI助手提供,问题来源于学员提问