QDirIterator 类为目录条目列表提供了一个迭代器。
Header | #include |
---|---|
qmake | QT += core |
Since | Qt 4.3 |
详述
可以使用QDirIterator一次浏览一个目录。它类似于QDir::entryList()和QDir::entryInfoList(),但因为它一次列出一个条目,而不是一次列出所有条目,所以伸缩性更好,更适合大型目录。它还支持递归地列出目录内容和符号链接。与QDir::entryList()不同,QDirIterator不支持排序。
QDirIterator构造函数接受一个QDir或一个目录作为参数。构造之后,迭代器位于第一个目录条目之前。下面是如何按顺序遍历所有条目:
QDirIterator it("E:/Users/Desktop/", QDirIterator::Subdirectories);
while (it.hasNext() ){
qDebug() << it.next ();
}
下面是如何递归地查找和读取通过名称过滤的所有文件:
QDirIterator it("E:/Users/Desktop/", {"*.png"}, QDir::NoFilter, QDirIterator::Subdirectories);
while (it.hasNext()) {
qDebug() << it.next ();
}
next() 函数返回到下一个目录条目的路径并推进迭代器。 您也可以调用filePath() 来获取当前文件路径,而无需前进迭代器。 fileName() 函数仅返回文件名,类似于QDir::entryList() 的工作方式。 您也可以调用fileInfo() 以获取当前条目的QFileInfo。 与Qt的容器迭代器不同,QDirIterator是单向的(即,您不能以相反的顺序迭代目录),并且不允许随机访问。
参见QDir和QDir::entryList()。
公共类型
-
enum IteratorFlag
**flags IteratorFlags**这个枚举描述了你可以组合来配置QDirIterator的行为的标志。
Constant | Value | Description |
---|---|---|
QDirIterator::NoIteratorFlags | 0x0 | 默认值,表示没有标记。迭代器将返回指定路径的条目。 |
QDirIterator::Subdirectories | 0x2 | 列出所有子目录中的条目。 |
QDirIterator::FollowSymlinks | 0x1 | 当与子目录组合时,该标志允许遍历指定路径的所有子目录,并跟随所有符号链接。符号链接循环(例如,“link” => ".“或"link” => “…”)会被自动检测并忽略。 |
公共函数
构造和析构
-
QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)
path : 字符串路径
nameFilters :名称过滤器
filters :QDir的过滤项目
flags :迭代行为
默认情况下,flags是NoIteratorFlags,它提供了与QDir::entryList()相同的行为。
注意:要列出指向不存在文件的符号链接,QDir::System必须传递给标志。 -
QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)
默认情况下,flags是NoIteratorFlags,它提供了与QDir::entryList()相同的行为。
注意:要列出指向不存在文件的符号链接,QDir::System必须传递给标志。 -
QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
-
QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)
-
~QDirIterator()
获取当前迭代的文件信息
- QFileInfo fileInfo() const
- QString fileName() const
- QString filePath() const
- QString path() const 返回所在目录
迭代器
- bool hasNext() const 是否有条目
- QString next() 将迭代器前进到下一个条目,并返回此迭代条目的文件路径
demo
#include <QtWidgets>
int main( int argc, char *argv[])
{
QDirIterator it("E:/Users/Desktop",{"*.png"}, QDir::NoFilter);
while (it.hasNext ()) {
qDebug() << it.next ();
qDebug() << it.fileName () << 1;
qDebug() << it.filePath () << 2;
qDebug() << it.fileInfo () << 3;
qDebug() << it.path () << 4;
}
return 0;
}