QDirIterator Class
Die Klasse „QDirIterator“ stellt einen Iterator für Verzeichniseinträge bereit. Mehr...
| Header: | #include <QDirIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- Liste aller Mitglieder, einschließlich geerbter Mitglieder
- QDirIterator ist Teil von „Eingabe/Ausgabe und Netzwerk“.
Öffentliche Typen
| enum | IteratorFlag { NoIteratorFlags, Subdirectories, FollowSymlinks } |
| flags | IteratorFlags |
Öffentliche Funktionen
| 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 |
Ausführliche Beschreibung
Mit QDirIterator können Sie nacheinander durch die Einträge eines Verzeichnisses navigieren. Er ähnelt den Funktionen ` QDir::entryList()` und ` QDir::entryInfoList()`, ist jedoch besser skalierbar und eignet sich besser für große Verzeichnisse, da er die Einträge einzeln statt alle auf einmal auflistet. Er unterstützt außerdem die rekursive Auflistung von Verzeichnisinhalten und das Verfolgen symbolischer Links. Im Gegensatz zu ` QDir::entryList()` unterstützt `QDirIterator` keine Sortierung.
Der Konstruktor von `QDirIterator` nimmt einen ` QDir ` oder ein Verzeichnis als Argument entgegen. Nach der Initialisierung befindet sich der Iterator vor dem ersten Verzeichniseintrag. So durchlaufen Sie alle Einträge nacheinander:
QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext()) {
QString dir = it.next();
qDebug() << dir;
// /etc/.
// /etc/..
// /etc/X11
// /etc/X11/fs
// ...
}So können Sie alle Dateien, die nach ihrem Namen gefiltert wurden, rekursiv finden und lesen:
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";
}Die Funktionen ` next()` und ` nextFileInfo()` bewegen den Iterator vorwärts und geben den Pfad oder die ` QFileInfo ` des nächsten Verzeichniseintrags zurück. Sie können auch ` filePath()` oder ` fileInfo()` aufrufen, um den aktuellen Dateipfad oder die ` QFileInfo ` abzurufen, ohne den Iterator zuvor vorwärts zu bewegen. Die Funktion ` fileName()` gibt nur den Namen der Datei zurück, ähnlich wie bei ` QDir::entryList()`.
Im Gegensatz zu den Container-Iteratoren von Qt ist der `QDirIterator` unidirektional (d. h., Verzeichnisse können nicht in umgekehrter Reihenfolge durchlaufen werden) und erlaubt keinen wahlfreien Zugriff.
Hinweis: Diese Klasse ist veraltet und wird möglicherweise in einer Qt-Version entfernt. Verwenden Sie stattdessen ` QDirListing `; siehe „Portierung von `QDirIterator` nach `QDirListing`“.
Siehe auch „ QDir “ und „ QDir::entryList()“.
Dokumentation zu den Mitgliedstypen
enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags
Diese Enumeration beschreibt Flags, die Sie kombinieren können, um das Verhalten von QDirIterator zu konfigurieren.
| Konstante | Wert | Beschreibung |
|---|---|---|
QDirIterator::NoIteratorFlags | 0x0 | Der Standardwert, der keine Flags darstellt. Der Iterator gibt Einträge für den zugewiesenen Pfad zurück. |
QDirIterator::Subdirectories | 0x2 | Listet auch Einträge in allen Unterverzeichnissen auf. |
QDirIterator::FollowSymlinks | 0x1 | In Kombination mit „Subdirectories“ ermöglicht dieses Flag das Durchlaufen aller Unterverzeichnisse des angegebenen Pfads unter Berücksichtigung aller symbolischen Links. Schleifen bei symbolischen Links (z. B. „link“ => „.“ oder „link“ => „..“) werden automatisch erkannt und ignoriert. |
Der Typ `IteratorFlags` ist ein `typedef` für ` QFlags<IteratorFlag>`. Er speichert eine ODER-Kombination von `IteratorFlag`-Werten.
Dokumentation der Mitgliedsfunktionen
QDirIterator::QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)
Erstellt einen QDirIterator, der die Eintragsliste von „ dir “ unter Verwendung der Namensfilter und regulären Filter von „ dir “ durchlaufen kann. Über „ flags “ können Optionen übergeben werden, um festzulegen, wie das Verzeichnis durchlaufen werden soll.
Standardmäßig ist flags gleich NoIteratorFlags, was das gleiche Verhalten wie bei QDir::entryList() liefert.
Die Sortierung in „ dir “ wird ignoriert.
Hinweis: Um Symlinks aufzulisten, die auf nicht vorhandene Dateien verweisen, muss „ QDir::System “ an die Flags übergeben werden.
Siehe auch hasNext(), next() und IteratorFlags.
QDirIterator::QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
Erstellt einen QDirIterator, der path durchlaufen kann. Über flags können Sie Optionen übergeben, um festzulegen, wie das Verzeichnis durchlaufen werden soll.
Standardmäßig ist „ flags “ auf „ NoIteratorFlags “ gesetzt, was das gleiche Verhalten wie bei „ QDir::entryList()“ bietet.
Hinweis: Um symbolische Links aufzulisten, die auf nicht vorhandene Dateien verweisen, muss „ QDir::System “ an die Flags übergeben werden.
Siehe auch hasNext(), next() und IteratorFlags.
QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)
Erstellt einen QDirIterator, der path durchlaufen kann, ohne Namensfilterung und mit filters als Eintragsfilter. Sie können Optionen über flags übergeben, um festzulegen, wie das Verzeichnis durchlaufen werden soll.
Standardmäßig ist „ filters “ auf „ QDir::NoFilter “ gesetzt und „ flags “ auf „ NoIteratorFlags “, was das gleiche Verhalten wie bei „ QDir::entryList()“ liefert.
Hinweis: Um Symlinks aufzulisten, die auf nicht vorhandene Dateien verweisen, muss „ QDir::System “ an die Flags übergeben werden.
Siehe auch hasNext(), next() und IteratorFlags.
QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)
Erstellt einen QDirIterator, der mithilfe von nameFilters und filters durch path iterieren kann. Über flags können Sie Optionen übergeben, um festzulegen, wie das Verzeichnis durchlaufen werden soll.
Standardmäßig ist flags auf NoIteratorFlags gesetzt, was das gleiche Verhalten wie QDir::entryList() bietet.
Beispielsweise könnte der folgende Iterator verwendet werden, um Audiodateien zu durchlaufen:
QDirIterator audioFileIt(audioPath, {"*.mp3", "*.wav"}, QDir::Files);Hinweis: Um Symlinks aufzulisten, die auf nicht vorhandene Dateien verweisen, muss „ QDir::System “ an die Flags übergeben werden.
Siehe auch hasNext(), next(), IteratorFlags und QDir::setNameFilters().
[noexcept] QDirIterator::~QDirIterator()
Zerstört das „ QDirIterator “.
QFileInfo QDirIterator::fileInfo() const
Gibt einen ` QFileInfo ` für den aktuellen Verzeichniseintrag zurück.
Siehe auch ` filePath()` und ` fileName()`.
QString QDirIterator::fileName() const
Gibt den Dateinamen des aktuellen Verzeichniseintrags zurück, ohne den vorangestellten Pfad.
Diese Funktion ist praktisch, wenn ein einzelnes Verzeichnis durchlaufen wird. Bei Verwendung des Flags „ QDirIterator::Subdirectories “ können Sie mit „ filePath()“ den vollständigen Pfad abrufen.
Siehe auch „ filePath()“ und „ fileInfo()“.
QString QDirIterator::filePath() const
Gibt den vollständigen Dateipfad für den aktuellen Verzeichniseintrag zurück.
Siehe auch fileInfo() und fileName().
bool QDirIterator::hasNext() const
Gibt „ true “ zurück, wenn das Verzeichnis mindestens einen weiteren Eintrag enthält; andernfalls wird „false“ zurückgegeben.
Siehe auch next(), nextFileInfo(), fileName(), filePath() und fileInfo().
QString QDirIterator::next()
Springt mit dem Iterator zum nächsten Eintrag und gibt den Dateipfad dieses neuen Eintrags zurück. Wenn hasNext() den Wert „ false “ zurückgibt, führt diese Funktion keine Aktion aus und gibt einen leeren QString zurück. Idealerweise sollten Sie vor dem Aufruf dieser Methode immer hasNext() aufrufen.
Sie können ` fileName()` oder ` filePath()` aufrufen, um den Dateinamen oder den Pfad des aktuellen Eintrags abzurufen, oder ` fileInfo()`, um ein ` QFileInfo ` für den aktuellen Eintrag zu erhalten.
Rufen Sie „ nextFileInfo()“ anstelle von „next()“ auf, wenn Sie an der „ QFileInfo “ interessiert sind.
Siehe auch ` hasNext()`, ` nextFileInfo()`, ` fileName()`, ` filePath()` und ` fileInfo()`.
[since 6.3] QFileInfo QDirIterator::nextFileInfo()
Springt mit dem Iterator zum nächsten Eintrag und gibt die Dateiinformationen dieses neuen Eintrags zurück. Wenn „ hasNext()“ den Wert „ false “ zurückgibt, führt diese Funktion keine Aktion aus und gibt einen leeren „ QFileInfo “ zurück. Idealerweise sollten Sie vor dem Aufruf dieser Methode immer „ hasNext()“ aufrufen.
Sie können ` fileName()` oder ` filePath()` aufrufen, um den Dateinamen oder Pfad des aktuellen Eintrags abzurufen, oder ` fileInfo()`, um ein ` QFileInfo ` für den aktuellen Eintrag zu erhalten.
Rufen Sie „ next()“ anstelle von „nextFileInfo()“ auf, wenn Sie lediglich die „ filePath()“ benötigen.
Diese Funktion wurde in Qt 6.3 eingeführt.
Siehe auch hasNext(), fileName(), filePath() und fileInfo().
QString QDirIterator::path() const
Gibt das Stammverzeichnis des Iterators zurück.
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.