Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
|
The QDirListing class provides an STL-style iterator for directory entries. More...
#include <qdirlisting.h>
Classes | |
class | const_iterator |
class | DirEntry |
Public Types | |
enum class | IteratorFlag { NoFlag = 0x0 , FollowSymlinks = 0x1 , Recursive = 0x2 } |
This enum class describes flags can be used to configure the behavior of QDirListing. More... | |
Public Member Functions | |
QDirListing (const QDir &dir, IteratorFlags flags=IteratorFlag::NoFlag) | |
Constructs a QDirListing that can iterate over dir's entries, using dir's name filters and the QDir::Filters set in dir. | |
QDirListing (const QString &path, IteratorFlags flags=IteratorFlag::NoFlag) | |
Constructs a QDirListing that can iterate over path. | |
QDirListing (const QString &path, QDir::Filters filter, IteratorFlags flags=IteratorFlag::NoFlag) | |
Constructs a QDirListing that can iterate over path. | |
QDirListing (const QString &path, const QStringList &nameFilters, QDir::Filters filters=QDir::NoFilter, IteratorFlags flags=IteratorFlag::NoFlag) | |
Constructs a QDirListing that can iterate over path, using nameFilters and filters. | |
~QDirListing () | |
Destroys the QDirListing. | |
QString | iteratorPath () const |
Returns the directory path used to construct this QDirListing. | |
const_iterator | begin () const |
const_iterator | cbegin () const |
const_iterator | end () const |
const_iterator | cend () const |
begin()/cbegin() returns a QDirListing::const_iterator that enables iterating over directory entries using a ranged-for loop; dereferencing this iterator returns a {const QFileInfo &}. | |
const_iterator | constBegin () const |
const_iterator | constEnd () const |
Friends | |
class | QDir |
The QDirListing class provides an STL-style iterator for directory entries.
\inmodule QtCore
You can use QDirListing to navigate entries of a directory one at a time. It is similar to QDir::entryList() and QDir::entryInfoList(), but because it lists entries one at a time instead of all at once, it scales better and is more suitable for large directories. It also supports listing directory contents recursively, and following symbolic links. Unlike QDir::entryList(), QDirListing does not support sorting.
The QDirListing constructor takes a QDir or a directory path as argument. Here's how to iterate over all entries recursively:
Here's how to find and read all files filtered by name, recursively:
Iterators constructed by QDirListing (QDirListing::const_iterator) are forward-only (you cannot iterate directories in reverse order) and don't allow random access. They can be used in ranged-for loops (or with STL alogrithms that don't require random access iterators). Dereferencing a valid iterator returns a QDirListing::DirEntry object. The (c)end() iterator marks the end of the iteration. Dereferencing the end iterator is undefiend behavior.
QDirListing::DirEntry offers a subset of QFileInfo's API (for example, fileName(), filePath(), exists()). Internally, DirEntry only constructs a QFileInfo object if needed, that is, if the info hasn't been already fetched by other system functions. You can use DirEntry::fileInfo() to get a QFileInfo. For example:
Definition at line 17 of file qdirlisting.h.
|
strong |
This enum class describes flags can be used to configure the behavior of QDirListing.
These flags can be bitwise OR'ed together.
\value NoFlag The default value, representing no flags. The iterator will return entries for the assigned path.
\value FollowSymlinks When combined with Recursive, this flag enables iterating through all subdirectories of the assigned path, following all symbolic links. Symbolic link loops (e.g., link => . or link => ..) are automatically detected and ignored.
\value Recursive List entries inside all subdirectories as well.
Enumerator | |
---|---|
NoFlag | |
FollowSymlinks | |
Recursive |
Definition at line 20 of file qdirlisting.h.
QDirListing::QDirListing | ( | const QDir & | dir, |
IteratorFlags | flags = IteratorFlag::NoFlag ) |
Constructs a QDirListing that can iterate over dir's entries, using dir's name filters and the QDir::Filters set in dir.
You can pass options via flags to decide how the directory should be iterated.
By default, flags is NoIteratorFlags, which provides the same behavior as in QDir::entryList().
The sorting in dir is ignored.
Definition at line 388 of file qdirlisting.cpp.
References QString::constData(), dir, and other().
QDirListing::QDirListing | ( | const QString & | path, |
IteratorFlags | flags = IteratorFlag::NoFlag ) |
Constructs a QDirListing that can iterate over path.
You can pass options via flags to decide how the directory should be iterated.
By default, flags is NoIteratorFlags, which provides the same behavior as in QDir::entryList().
Definition at line 431 of file qdirlisting.cpp.
References QDir::NoFilter.
QDirListing::QDirListing | ( | const QString & | path, |
QDir::Filters | filters, | ||
IteratorFlags | flags = IteratorFlag::NoFlag ) |
Constructs a QDirListing that can iterate over path.
Entries are filtered according to filters. You can pass options via flags to decide how the directory should be iterated.
By default, filters is QDir::NoFilter, and flags is NoIteratorFlags, which provides the same behavior as in QDir::entryList().
Definition at line 413 of file qdirlisting.cpp.
References filters.
QDirListing::QDirListing | ( | const QString & | path, |
const QStringList & | nameFilters, | ||
QDir::Filters | filters = QDir::NoFilter, | ||
IteratorFlags | flags = IteratorFlag::NoFlag ) |
Constructs a QDirListing that can iterate over path, using nameFilters and filters.
You can pass options via flags to decide how the directory should be iterated.
By default, flags is NoIteratorFlags, which provides the same behavior as QDir::entryList().
For example, the following iterator could be used to iterate over audio files:
Definition at line 458 of file qdirlisting.cpp.
References filters.
|
default |
Destroys the QDirListing.
QDirListing::const_iterator QDirListing::begin | ( | ) | const |
Definition at line 507 of file qdirlisting.cpp.
References it.
Referenced by QDirIteratorPrivate::init().
|
inline |
Definition at line 100 of file qdirlisting.h.
References begin().
|
inline |
begin()/cbegin() returns a QDirListing::const_iterator that enables iterating over directory entries using a ranged-for loop; dereferencing this iterator returns a {const QFileInfo &}.
end()/cend() return a sentinel const_iterator that signals the end of the iteration. Dereferencing this iterator is undefined behavior.
For example:
Here's how to find and read all files filtered by name, recursively:
Definition at line 102 of file qdirlisting.h.
|
inline |
Definition at line 105 of file qdirlisting.h.
References begin().
|
inline |
Definition at line 106 of file qdirlisting.h.
|
inline |
Definition at line 101 of file qdirlisting.h.
Referenced by QDirIteratorPrivate::advance(), QDirIterator::hasNext(), and QDirIteratorPrivate::init().
QString QDirListing::iteratorPath | ( | ) | const |
Returns the directory path used to construct this QDirListing.
Definition at line 477 of file qdirlisting.cpp.
Referenced by QDirIterator::path().
|
friend |
Definition at line 112 of file qdirlisting.h.