Sur cette page

QDirIterator Class

La classe QDirIterator fournit un itérateur pour les listes d'entrées de répertoires. En savoir plus...

En-tête : #include <QDirIterator>
CMake : find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake : QT += core

Types publics

enum IteratorFlag { NoIteratorFlags, Subdirectories, FollowSymlinks }
flags IteratorFlags

Fonctions publiques

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

Description détaillée

Vous pouvez utiliser QDirIterator pour parcourir les éléments d’un répertoire un par un. Il est similaire à ` QDir::entryList()` et ` QDir::entryInfoList()`, mais comme il répertorie les éléments un par un plutôt que tous en même temps, il offre de meilleures performances et est plus adapté aux répertoires volumineux. Il prend également en charge la liste récursive du contenu des répertoires et le suivi des liens symboliques. Contrairement à ` QDir::entryList()`, QDirIterator ne prend pas en charge le tri.

Le constructeur de QDirIterator prend comme argument une instance de ` QDir ` ou un répertoire. Une fois instancié, l'itérateur se trouve avant la première entrée du répertoire. Voici comment parcourir toutes les entrées de manière séquentielle :

QDirIterator it("/etc", QDirIterator::Subdirectories);
while (it.hasNext()) {
    QString dir = it.next();
    qDebug() << dir;
   // /etc/.
    // /etc/..
    // /etc/X11
    // /etc/X11/fs
    // ...
}

Voici comment rechercher et lire tous les fichiers filtrés par nom, de manière récursive :

QDirIterator it("/sys", QStringList() << "scaling_cur_freq", QDir::NoFilter, QDirIterator::Sous-répertoires);
while (it.hasNext()) {
    QFile f(it.next());
    f.open(QIODevice::ReadOnly);
    qDebug() << f.fileName() << f.readAll().trimmed().toDouble() / 1000 << "MHz";
}

Les fonctions next() et nextFileInfo() font avancer l’itérateur et renvoient le chemin d’accès ou l’ QFileInfo de l’entrée de répertoire suivante. Vous pouvez également appeler filePath() ou fileInfo() pour obtenir le chemin d’accès actuel du fichier ou l’ QFileInfo sans faire avancer l’itérateur au préalable. La fonction fileName() renvoie uniquement le nom du fichier, de la même manière que QDir::entryList().

Contrairement aux itérateurs de conteneurs de Qt, QDirIterator est unidirectionnel (c'est-à-dire qu'il n'est pas possible de parcourir les répertoires dans l'ordre inverse) et ne permet pas l'accès aléatoire.

Remarque : cette classe est obsolète et pourrait être supprimée dans une prochaine version de Qt. Utilisez plutôt ` QDirListing ` ; voir Portage de `QDirIterator` vers `QDirListing`.

Voir également QDir et QDir::entryList().

Documentation sur les types de membres

enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags

Cette énumération décrit les indicateurs que vous pouvez combiner pour configurer le comportement de QDirIterator.

ConstanteValeurDescription
QDirIterator::NoIteratorFlags0x0Valeur par défaut, indiquant l'absence d'indicateurs. L'itérateur renverra les entrées correspondant au chemin spécifié.
QDirIterator::Subdirectories0x2Répertorie également les entrées de tous les sous-répertoires.
QDirIterator::FollowSymlinks0x1Combiné avec le drapeau « Subdirectories », ce drapeau permet de parcourir tous les sous-répertoires du chemin spécifié, en suivant tous les liens symboliques. Les boucles de liens symboliques (par exemple, « link » => « . » ou « link » => « .. ») sont automatiquement détectées et ignorées.

Le type `IteratorFlags` est un `typedef` pour ` QFlags<IteratorFlag>`. Il stocke une combinaison OR de valeurs `IteratorFlag`.

Documentation des fonctions membres

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

Crée un QDirIterator capable de parcourir la liste des entrées de dir, en utilisant les filtres de nom et les filtres réguliers de dir. Vous pouvez passer des options via flags pour définir la manière dont le répertoire doit être parcouru.

Par défaut, flags est défini sur NoIteratorFlags, ce qui offre le même comportement que dans QDir::entryList().

Le tri défini dans ` dir ` est ignoré.

Remarque : pour lister les liens symboliques pointant vers des fichiers inexistants, il faut passer QDir::System aux indicateurs.

Voir également hasNext(), next() et IteratorFlags.

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

Crée un QDirIterator capable de parcourir path. Vous pouvez passer des options via flags pour définir la manière dont le répertoire doit être parcouru.

Par défaut, ` flags ` est ` NoIteratorFlags`, ce qui offre le même comportement que dans ` QDir::entryList()`.

Remarque : pour répertorier les liens symboliques pointant vers des fichiers inexistants, il faut passer QDir::System aux indicateurs.

Voir également hasNext(), next() et IteratorFlags.

QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)

Crée un QDirIterator capable de parcourir path, sans filtrage par nom et en utilisant filters pour le filtrage des entrées. Vous pouvez passer des options via flags pour définir la manière dont le répertoire doit être parcouru.

Par défaut, ` filters ` est défini sur ` QDir::NoFilter` et ` flags ` sur ` NoIteratorFlags`, ce qui offre le même comportement que dans ` QDir::entryList()`.

Remarque : pour lister les liens symboliques pointant vers des fichiers inexistants, il faut passer l'option ` QDir::System ` aux indicateurs.

Voir également hasNext(), next() et IteratorFlags.

QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)

Crée un QDirIterator capable de parcourir path, en utilisant nameFilters et filters. Vous pouvez passer des options via flags pour définir la manière dont le répertoire doit être parcouru.

Par défaut, flags est défini sur NoIteratorFlags, ce qui offre le même comportement que QDir::entryList().

Par exemple, l'itérateur suivant pourrait être utilisé pour parcourir des fichiers audio :

QDirIterator audioFileIt(audioPath, {"*.mp3", "*.wav"}, QDir::Files);

Remarque : pour répertorier les liens symboliques pointant vers des fichiers inexistants, il faut passer QDir::System aux indicateurs.

Voir également hasNext(), next(), IteratorFlags et QDir::setNameFilters().

[noexcept] QDirIterator::~QDirIterator()

Supprime l'QDirIterator.

QFileInfo QDirIterator::fileInfo() const

Renvoie un objet ` QFileInfo ` correspondant à l'entrée de répertoire actuelle.

Voir aussi filePath() et fileName().

QString QDirIterator::fileName() const

Renvoie le nom du fichier correspondant à l'entrée du répertoire courant, sans le chemin d'accès préfixé.

Cette fonction est pratique pour parcourir un seul répertoire. Lorsque vous utilisez le drapeau ` QDirIterator::Subdirectories `, vous pouvez utiliser ` filePath()` pour obtenir le chemin d'accès complet.

Voir également filePath() et fileInfo().

QString QDirIterator::filePath() const

Renvoie le chemin d'accès complet de l'entrée de répertoire actuelle.

Voir également fileInfo() et fileName().

bool QDirIterator::hasNext() const

Renvoie « true » s'il reste au moins une entrée dans le répertoire ; sinon, la fonction renvoie « false ».

Voir également next(), nextFileInfo(), fileName(), filePath() et fileInfo().

QString QDirIterator::next()

Fait avancer l'itérateur vers l'entrée suivante et renvoie le chemin d'accès de cette nouvelle entrée. Si la fonction hasNext() renvoie false, cette fonction ne fait rien et renvoie un objet vide de type QString. Idéalement, vous devriez toujours appeler la fonction hasNext() avant d'appeler cette méthode.

Vous pouvez appeler ` fileName()` ou ` filePath()` pour obtenir le nom ou le chemin d’accès du fichier de l’entrée actuelle, ou ` fileInfo()` pour obtenir un ` QFileInfo ` correspondant à l’entrée actuelle.

Appelez ` nextFileInfo()` plutôt que `next()` si vous souhaitez obtenir l'QFileInfo.

Voir également hasNext(), nextFileInfo(), fileName(), filePath() et fileInfo().

[since 6.3] QFileInfo QDirIterator::nextFileInfo()

Fait avancer l'itérateur vers l'entrée suivante et renvoie les informations relatives au fichier de cette nouvelle entrée. Si la fonction hasNext() renvoie false, cette fonction ne fait rien et renvoie un QFileInfo vide. Idéalement, vous devriez toujours appeler la fonction hasNext() avant d'appeler cette méthode.

Vous pouvez appeler ` fileName()` ou ` filePath()` pour obtenir le nom ou le chemin d’accès du fichier de l’entrée actuelle, ou ` fileInfo()` pour obtenir un ` QFileInfo ` correspondant à l’entrée actuelle.

Appelez ` next()` plutôt que `nextFileInfo()` lorsque vous n'avez besoin que de l'filePath().

Cette fonction a été introduite dans Qt 6.3.

Voir également hasNext(), fileName(), filePath() et fileInfo().

QString QDirIterator::path() const

Renvoie le répertoire de base de l'itérateur.

© 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.