QDirIterator 类
The QDirIterator class provides an iterator for directory entrylists. More...
头文件 | #include <QDirIterator> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake | QT += core |
公共类型
枚举 | IteratorFlag { NoIteratorFlags, Subdirectories, FollowSymlinks } |
标志 | IteratorFlags |
公共函数
QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags) | |
QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags) | |
QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags) | |
QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags) | |
~QDirIterator() | |
QFileInfo | fileInfo() const |
QString | fileName() const |
QString | filePath() const |
bool | hasNext() const |
QString | next() |
(since 6.3) QFileInfo | nextFileInfo() |
QString | path() const |
详细说明
您可以使用 QDirIterator 逐一导航目录中的条目。它与 QDir::entryList() 和 QDir::entryInfoList() 类似,但由于它一次只列出一个条目,而不是一次性列出所有条目,因此它可扩展性更好,更适合大目录。它还支持递归列出目录内容,并跟随符号链接。与 QDir::entryList() 不同,QDirIterator 不支持排序。
QDirIterator 构造函数接受一个 QDir 或目录作为参数。构建后,迭代器位于第一个目录条目之前。以下是按顺序遍历所有条目的方法
QDirIterator it("/etc", QDirIterator::Subdirectories); while (it.hasNext()) { QString dir = it.next(); qDebug() << dir; // /etc/. // /etc/.. // /etc/X11 // /etc/X11/fs // ... }
以下是查找和读取按名称过滤的所有文件的递归方法
QDirIterator it("/sys", QStringList() << "scaling_cur_freq", QDir::NoFilter, QDirIterator::Subdirectories); while (it.hasNext()) { QFile f(it.next()); f.open(QIODevice::ReadOnly); qDebug() << f.fileName() << f.readAll().trimmed().toDouble() / 1000 << "MHz"; }
函数next()和nextFileInfo()会移动迭代器并返回下一个目录条目的路径或QFileInfo。您还可以调用filePath()或fileInfo()来获取当前文件路径或QFileInfo,而无需首先移动迭代器。fileName()函数仅返回文件名,类似于QDir::entryList()的工作方式。
与Qt的容器迭代器不同,QDirIterator是单向的(即,您不能按顺序遍历目录)且不允许随机访问。
另请参阅QDir和QDir::entryList。
成员类型文档
枚举QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags
此枚举描述了您可以将它们组合起来以配置QDirIterator行为的标志。
常数 | 值 | 描述 |
---|---|---|
QDirIterator::NoIteratorFlags | 0x0 | 默认值,表示没有标志。迭代器将返回指定路径的条目。 |
QDirIterator::Subdirectories | 0x2 | 还包括所有子目录中的条目列表。 |
QDirIterator::FollowSymlinks | 0x1 | 当与Subdirectories组合时,此标志可以遍历指定路径的所有子目录,并跟踪所有符号链接。符号链接循环(例如,“链接”=>“.”或“链接”=>“..”)会自动检测并忽略。 |
IteratorFlags类型是QFlags<IteratorFlag>的typedef。它存储了IteratorFlag值的OR组合。
成员函数文档
QDirIterator::QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)
构建一个QDirIterator,可以遍历dir的条目列表,使用dir的名称过滤器和正则过滤器。您可以通过flags传递选项来决定如何遍历目录。
默认情况下,flags是NoIteratorFlags,这提供了与QDir::entryList()相同的行为。
dir中的排序被忽略。
注意:要列出指向不存在文件的符号链接,必须将QDir::System传递给标志。
另请参阅hasNext(),next()和IteratorFlags。
QDirIterator::QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
构建一个QDirIterator,可以遍历path。您可以通过flags传递选项来决定如何遍历目录。
默认情况下,flags是NoIteratorFlags,这提供了与QDir::entryList()相同的行为。
注意:要列出指向不存在文件的符号链接,必须将QDir::System传递给标志。
另请参阅hasNext(),next()和IteratorFlags。
QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)
构建一个QDirIterator,可以遍历path,没有名称过滤器和条目过滤器的filters。您可以通过flags传递选项来决定如何遍历目录。
默认情况下,filters是QDir::NoFilter,并且flags是NoIteratorFlags,这提供了与QDir::entryList()相同的行为。
注意:要列出指向不存在文件的符号链接,必须将QDir::System传递给标志。
另请参阅hasNext(),next()和IteratorFlags。
QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)
构建一个可以遍历path的Q_DIR迭代器,使用nameFilters和filters。您可以通过flags传递选项来决定如何遍历目录。
默认情况下,flags是NoIteratorFlags,它提供与Q_DIR::entryList相同的行为。
例如,以下迭代器可以用于遍历音频文件
QDirIterator audioFileIt(audioPath, {"*.mp3", "*.wav"}, QDir::Files);
注意:要列出指向不存在文件的符号链接,必须将QDir::System传递给标志。
另请参阅hasNext(),next(),IteratorFlags,以及Q_DIR::setNameFilters。
[noexcept]
QDirIterator::~QDirIterator()
销毁Q_DIR
返回当前目录条目的QFileInfo。 返回当前目录条目的文件名,不包含路径。 此函数在遍历单个目录时非常有用。当使用Q_DIRfilePath()来获取完整路径。 返回当前目录条目的完整文件路径。 如果目录中至少还有一条条目,则返回 另请参阅next(),nextFileInfo(),fileName(),filePath()和fileInfo()。 将迭代器向前推进到下一个条目,并返回此新条目的文件路径。如果hasNext()返回 您可以调用fileName()或filePath()来获取当前条目的文件名或路径,或调用fileInfo()来获取当前条目的QFileInfo。 如果对QFileInfo感兴趣,请改为调用nextFileInfo()而不是next()。 另请参阅 hasNext(),nextFileInfo(),fileName(),filePath() 和 fileInfo()。 将迭代器移动到下一个条目,并返回此新条目的文件信息。如果 hasNext() 返回 您可以调用fileName()或filePath()来获取当前条目的文件名或路径,或调用fileInfo()来获取当前条目的QFileInfo。 当您只需 filePath 时,请调用 next() 而不是 nextFileInfo()。 此函数是在 Qt 6.3 版中引入的。 另请参阅 hasNext(),fileName(),filePath() 和 fileInfo()。 返回迭代器的基准目录。QFileInfo QDirIterator::fileInfo() const
QString QDirIterator::fileName() const
QString QDirIterator::filePath() const
bool QDirIterator::hasNext() const
true
;否则返回false。QString QDirIterator::next()
false
,则此函数不执行任何操作,并返回一个空的QString。[自 6.3 版开始]
QFileInfo QDirIterator::nextFileInfo()false
,则此函数不执行任何操作,并返回一个空的 QFileInfo。QString QDirIterator::path() const
© 2024 Qt 公司。这里包含的文档贡献归其各自的拥有者所有。此处提供的文档是根据 Free Software Foundation 发布的 GNU Free Documentation License 版本 1.3 许可的。Qt 及其相关标志是芬兰的 Qt 公司和/或其他国家的注册商标。所有其他商标都是其各自拥有者的财产。