QDirIterator Class文件目录迭代器

QDirIterator 类为目录条目列表提供了一个迭代器。

Header#include
qmakeQT += core
SinceQt 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()。

公共类型

  1. enum IteratorFlag
    **flags IteratorFlags

    **这个枚举描述了你可以组合来配置QDirIterator的行为的标志。

ConstantValueDescription
QDirIterator::NoIteratorFlags0x0默认值,表示没有标记。迭代器将返回指定路径的条目。
QDirIterator::Subdirectories0x2列出所有子目录中的条目。
QDirIterator::FollowSymlinks0x1当与子目录组合时,该标志允许遍历指定路径的所有子目录,并跟随所有符号链接。符号链接循环(例如,“link” => ".“或"link” => “…”)会被自动检测并忽略。

公共函数

构造和析构

  1. 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必须传递给标志。

  2. QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)
    默认情况下,flags是NoIteratorFlags,它提供了与QDir::entryList()相同的行为。
    注意:要列出指向不存在文件的符号链接,QDir::System必须传递给标志。

  3. QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)

  4. QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)

  5. ~QDirIterator()

获取当前迭代的文件信息

  1. QFileInfo fileInfo() const
  2. QString fileName() const
  3. QString filePath() const
  4. QString path() const 返回所在目录

迭代器

  1. bool hasNext() const     是否有条目
  2. 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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值