写一个迭代函数,使用Qfileinfo变量访问一个路径下所有文件,如果是文件,则加入QFileInfoList变量中,如果是文件夹,则进入其中重复该流程,直到记录完全部文件
时间: 2024-09-11 12:16:04 浏览: 39
Qt-文件路径使用方式和注意事项
要实现这样的迭代函数,我们可以使用递归的方法来遍历一个路径下的所有文件和文件夹。递归是一种常见的编程技巧,它允许函数调用自身来处理子目录结构。以下是一个简单的示例代码,展示如何使用Qt的QFileInfo和QDir类来实现这个功能。
```cpp
#include <QDir>
#include <QFileInfo>
#include <QFileInfoList>
#include <QDebug>
void iterateFiles(const QString &path, QFileInfoList &fileInfoList) {
QDir dir(path);
// 获取当前目录下的所有文件和文件夹
QFileInfoList list = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
for (const QFileInfo &info : list) {
if (info.isDir()) {
// 如果是目录,则递归调用函数处理子目录
iterateFiles(info.absoluteFilePath(), fileInfoList);
} else if (info.isFile()) {
// 如果是文件,则添加到QFileInfoList中
fileInfoList.append(info);
}
}
}
// 示例使用
int main() {
QFileInfoList files;
iterateFiles("/path/to/directory", files);
// 输出所有文件的路径
for (const QFileInfo &file : files) {
qDebug() << file.absoluteFilePath();
}
return 0;
}
```
在这个例子中,`iterateFiles`函数接受一个路径和一个用于存储文件信息的列表作为参数。函数首先检查给定路径,将其转换为`QDir`对象,并获取当前目录下的所有文件和文件夹信息。然后,它遍历这个列表,如果遇到文件夹(并且不是"."或".."这样的特殊目录),它会递归调用自身;如果遇到文件,则将其添加到传入的`fileInfoList`列表中。
在`main`函数中,我们创建了一个空的`QFileInfoList`并调用`iterateFiles`函数。之后,我们遍历`fileInfoList`并输出每个文件的绝对路径。
阅读全文