QDirIterator Class
Die Klasse QDirIterator stellt einen Iterator für Verzeichniseintragslisten zur Verfügung. Mehr...
Kopfzeile: | #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 Input/Output und Networking.
Ö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 |
Detaillierte Beschreibung
Sie können QDirIterator verwenden, um die Einträge eines Verzeichnisses einzeln zu durchlaufen. Es ist ähnlich wie QDir::entryList() und QDir::entryInfoList(), aber da es die Einträge einzeln auflistet, anstatt alle auf einmal, skaliert es besser und ist besser für große Verzeichnisse geeignet. Es unterstützt auch das rekursive Auflisten von Verzeichnisinhalten und das Verfolgen von symbolischen Links. Im Gegensatz zu QDir::entryList() unterstützt QDirIterator keine Sortierung.
Der QDirIterator Konstruktor nimmt ein QDir oder ein Verzeichnis als Argument. Nach der Konstruktion befindet sich der Iterator vor dem ersten Verzeichniseintrag. So kann man alle Einträge der Reihe nach durchlaufen:
QDirIterator it("/etc", QDirIterator::Unterverzeichnisse);while (it.hasNext()) { QString dir = it.next(); qDebug() << dir; // /etc/. // /etc/... // /etc/X11 // /etc/X11/fs // ...}
So finden und lesen Sie alle nach Namen gefilterten Dateien, rekursiv:
QDirIterator it("/sys", QStringList()<< "scaling_cur_freq", QDir::NoFilter, QDirIterator::Unterverzeichnisse);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() treiben den Iterator voran 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 QFileInfo zu erhalten, ohne den Iterator weiterzuschalten. Die Funktion fileName() gibt nur den Namen der Datei zurück, ähnlich wie die Funktion QDir::entryList().
Im Gegensatz zu den Container-Iteratoren von Qt ist QDirIterator uni-direktional (d.h. Sie können Verzeichnisse nicht in umgekehrter Reihenfolge durchlaufen) und erlaubt keinen zufälligen Zugriff.
Hinweis: Diese Klasse ist veraltet und wird möglicherweise in einer neuen Qt-Version entfernt. Verwenden Sie stattdessen QDirListing.
Siehe auch QDir und QDir::entryList().
Dokumentation der Mitgliedstypen
enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags
Diese Aufzählung beschreibt Flags, die Sie kombinieren können, um das Verhalten von QDirIterator zu konfigurieren.
Konstante | Wert | Beschreibung |
---|---|---|
QDirIterator::NoIteratorFlags | 0x0 | Der Standardwert, der für keine Flags steht. 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 Unterverzeichnisse ermöglicht dieses Flag die Iteration durch alle Unterverzeichnisse des zugewiesenen Pfades, wobei alle symbolischen Links verfolgt werden. Symbolische Linkschleifen (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)
Konstruiert einen QDirIterator, der über die Eintragsliste von dir iterieren kann und dabei die Namensfilter und regulären Filter von dir verwendet. Sie können Optionen über flags übergeben, um zu entscheiden, wie das Verzeichnis iteriert werden soll.
Standardmäßig ist flags NoIteratorFlags , was das gleiche Verhalten wie in QDir::entryList() bietet.
Die Sortierung in dir wird ignoriert.
Hinweis: Um Symlinks aufzulisten, die auf nicht existierende Dateien zeigen, muss QDir::System an die Flags übergeben werden.
Siehe auch hasNext(), next(), und IteratorFlags.
QDirIterator::QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
Konstruiert einen QDirIterator, der über path iterieren kann. Sie können Optionen über flags übergeben, um zu entscheiden, wie das Verzeichnis iteriert werden soll.
Standardmäßig ist flags NoIteratorFlags , was das gleiche Verhalten wie in QDir::entryList() bietet.
Hinweis: Um Symlinks aufzulisten, die auf nicht existierende Dateien zeigen, 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)
Konstruiert einen QDirIterator, der über path iterieren kann, ohne Namensfilterung und filters für die Filterung von Einträgen. Sie können Optionen über flags übergeben, um zu entscheiden, wie das Verzeichnis iteriert werden soll.
Standardmäßig ist filters gleich QDir::NoFilter und flags gleich NoIteratorFlags, was das gleiche Verhalten wie in QDir::entryList() bietet.
Hinweis: Um Symlinks aufzulisten, die auf nicht existierende Dateien zeigen, 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)
Konstruiert einen QDirIterator, der über path iterieren kann, indem er nameFilters und filters verwendet. Sie können über flags Optionen übergeben, um zu entscheiden, wie das Verzeichnis iteriert werden soll.
Standardmäßig ist flags NoIteratorFlags , was das gleiche Verhalten wie QDir::entryList() bietet.
Zum Beispiel könnte der folgende Iterator verwendet werden, um über Audiodateien zu iterieren:
QDirIterator audioFileIt(audioPath, {"*.mp3", "*.wav"}, QDir::Files);
Hinweis: Um Symlinks aufzulisten, die auf nicht existierende Dateien zeigen, muss QDir::System an die Flags übergeben werden.
Siehe auch hasNext(), next(), IteratorFlags, und QDir::setNameFilters().
[noexcept]
QDirIterator::~QDirIterator()
Zerstört die QDirIterator.
QFileInfo QDirIterator::fileInfo() const
Gibt eine QFileInfo für den aktuellen Verzeichniseintrag zurück.
Siehe auch filePath() und fileName().
QString QDirIterator::fileName() const
Gibt den Dateinamen für den aktuellen Verzeichniseintrag zurück, ohne den Pfad voranzustellen.
Diese Funktion ist praktisch, wenn ein einzelnes Verzeichnis durchlaufen wird. Wenn Sie das Kennzeichen QDirIterator::Subdirectories verwenden, können Sie filePath() benutzen, um den vollständigen Pfad zu erhalten.
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 es mindestens einen weiteren Eintrag im Verzeichnis gibt; andernfalls wird false zurückgegeben.
Siehe auch next(), nextFileInfo(), fileName(), filePath(), und fileInfo().
QString QDirIterator::next()
Schiebt den Iterator zum nächsten Eintrag vor und gibt den Dateipfad dieses neuen Eintrags zurück. Wenn hasNext() false
zurückgibt, tut diese Funktion nichts und gibt ein leeres QString zurück.
Sie können fileName() oder filePath() aufrufen, um den Dateinamen oder Pfad des aktuellen Eintrags zu erhalten, oder fileInfo(), um einen QFileInfo für den aktuellen Eintrag zu erhalten.
Rufen Sie nextFileInfo() anstelle von next() auf, wenn Sie sich für die QFileInfo interessieren.
Siehe auch hasNext(), nextFileInfo(), fileName(), filePath(), und fileInfo().
[since 6.3]
QFileInfo QDirIterator::nextFileInfo()
Schiebt den Iterator zum nächsten Eintrag vor und gibt die Dateiinformationen dieses neuen Eintrags zurück. Wenn hasNext() false
zurückgibt, tut diese Funktion nichts und gibt ein leeres QFileInfo zurück.
Sie können fileName() oder filePath() aufrufen, um den Dateinamen oder Pfad des aktuellen Eintrags zu erhalten, oder fileInfo(), um eine QFileInfo für den aktuellen Eintrag zu erhalten.
Rufen Sie next() anstelle von nextFileInfo() auf, wenn Sie nur 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 Basisverzeichnis des Iterators zurück.
© 2025 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.