QDirIterator Class
QDirIterator クラスは、ディレクトリエントリリストのイテレータを提供します。詳細...
ヘッダ | #include <QDirIterator> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバのリスト
- QDirIterator はInput/Output および Networking に含まれます。
パブリックタイプ
enum | IteratorFlag { NoIteratorFlags, Subdirectories, FollowSymlinks } |
flags | 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 を使用すると、ディレクトリのエントリを 1 つずつナビゲートできます。これはQDir::entryList() やQDir::entryInfoList() と似ていますが、一度にすべてのエントリを一覧表示するのではなく、一度に 1 つずつエントリを一覧表示するため、スケールが向上し、大規模なディレクトリに適しています。また、ディレクトリの内容を再帰的に一覧表示したり、シンボリックリンクをたどったりすることもできる。QDir::entryList() とは異なり、QDirIterator はソートをサポートしていません。
QDirIterator コンストラクタは、引数としてQDir またはディレクトリを取ります。構築後、イテレータは最初のディレクトリ・エントリの前に位置します。以下は、すべてのエントリを順次反復処理する方法です:
QDirIteratorit("/etc"、 QDirIterator::Subdirectories);while(it.hasNext()) { dir = it.next() QStringdir=it.next(); qDebug() << dir; // /etc/. // /etc/.. // /etc/X11 // /etc/X11/fs // ...}
以下は、名前でフィルタリングされたすべてのファイルを再帰的に検索して読み込む方法である:
QDirIteratorit("/sys"、 QStringList()<< "scaling_cur_freq"、 QDir::NoFilter、 QDirIterator::サブディレクトリ);while(it.hasNext()) { f(it.next()) QFilef(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 は単一方向(つまり、逆順でディレクトリを反復することはできません)であり、ランダム・アクセスはできません。
注意: このクラスは非推奨であり、Qt のリリースで削除される可能性があります。代わりにQDirListing を使用してください。
QDir とQDir::entryList()も参照してください 。
メンバ型ドキュメント
enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags
この enum は、QDirIterator の動作を設定するために組み合わせることができるフラグを記述します。
定数 | 値 | 説明 |
---|---|---|
QDirIterator::NoIteratorFlags | 0x0 | デフォルト値。イテレータは、割り当てられたパスのエントリを返します。 |
QDirIterator::Subdirectories | 0x2 | すべてのサブディレクトリ内のエントリもリストします。 |
QDirIterator::FollowSymlinks | 0x1 | Subdirectories と組み合わせると、このフラグは、割り当てられたパスのすべてのサブディレクトリを、すべてのシンボリックリンクをたどってイテレートすることを可能にする。シンボリックリンクのループ (たとえば "link" => "." や "link" => "..") は自動的に検出され、無視される。 |
IteratorFlags 型はQFlags<IteratorFlag> の typedef である。IteratorFlag値のORの組み合わせを格納する。
メンバ関数のドキュメント
QDirIterator::QDirIterator(const QDir &dir, QDirIterator::IteratorFlags flags = NoIteratorFlags)
dir の名前フィルタとレギュラーフィルタを使用して、dir のエントリリストを反復処理できる QDirIterator を構築します。flags を介してオプションを渡すことで、ディレクトリをどのように反復処理するかを決めることができます。
デフォルトでは、flags はNoIteratorFlags となり、QDir::entryList() と同じ動作をする。
dir のソートは無視されます。
注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要がある。
hasNext()、next()、IteratorFlagsも参照のこと 。
QDirIterator::QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
path を反復処理する QDirIterator を構築します。flags を介してオプションを渡すことで、ディレクトリをどのように反復処理するかを決定できます。
デフォルトでは、flags はNoIteratorFlags となり、QDir::entryList() と同じ動作となります。
注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要があります。
hasNext()、next()、IteratorFlagsも参照のこと 。
QDirIterator::QDirIterator(const QString &path, QDir::Filters filters, QDirIterator::IteratorFlags flags = NoIteratorFlags)
path を繰り返し処理する QDirIterator を構築します。名前フィルタリングは行わず、filters でエントリのフィルタリングを行います。flags を介してオプションを渡すことで、ディレクトリを反復処理する方法を決定できます。
デフォルトでは、filters はQDir::NoFilter 、flags はNoIteratorFlags となり、QDir::entryList() と同じ動作をします。
注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要がある。
hasNext()、next()、IteratorFlagsも参照のこと 。
QDirIterator::QDirIterator(const QString &path, const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDirIterator::IteratorFlags flags = NoIteratorFlags)
nameFilters とfilters を使用して、path を反復処理できる QDirIterator を構築します。flags を介してオプションを渡すことで、ディレクトリをどのように反復処理するかを決定できます。
デフォルトでは、flags はNoIteratorFlags となり、QDir::entryList() と同じ動作となります。
例えば、以下のイテレータは、オーディオ・ファイルを反復処理するために使用できます:
QDirIterator audioFileIt(audioPath, {"*.mp3", "*.wav"}, QDir::Files);
注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要がある。
hasNext()、next()、IteratorFlags 、QDir::setNameFilters()も参照のこと 。
[noexcept]
QDirIterator::~QDirIterator()
QDirIterator を破壊する。
QFileInfo QDirIterator::fileInfo() const
現在のディレクトリエントリのQFileInfo を返す。
QString QDirIterator::fileName() const
現在のディレクトリエントリのファイル名を、パスの前に付加せずに返す。
この関数は、1つのディレクトリを繰り返し処理する場合に便利である。QDirIterator::Subdirectories フラグを使用している場合は、filePath() を使用してフルパスを取得することができる。
QString QDirIterator::filePath() const
現在のディレクトリ・エントリのフル・ファイル・パスを返す。
bool QDirIterator::hasNext() const
ディレクトリにもう1つ以上のエントリがある場合はtrue
を返し、そうでない場合は false を返す。
next()、nextFileInfo()、fileName()、filePath()、fileInfo()も参照 。
QString QDirIterator::next()
イテレータを次のエントリに進め、この新しいエントリのファイルパスを返す。hasNext() がfalse
を返した場合、この関数は何もせず、空のQString を返す。
fileName() やfilePath() をコールして現在のエントリのファイル名やパスを取得したり、fileInfo() をコールして現在のエントリのQFileInfo を取得したりすることができる。
QFileInfo に興味がある場合は、next() の代わりにnextFileInfo() を呼び出す。
hasNext()、nextFileInfo()、fileName()、filePath()、fileInfo()も参照 。
[since 6.3]
QFileInfo QDirIterator::nextFileInfo()
イテレータを次のエントリに進め、その新しいエントリのファイル情報を返す。hasNext() がfalse
を返した場合、この関数は何もせず、空のQFileInfo を返す。
fileName() やfilePath() をコールして現在のエントリのファイル名やパスを取得したり、fileInfo() をコールして現在のエントリのQFileInfo を取得したりすることができる。
filePath() が必要な場合は、nextFileInfo() の代わりにnext() を呼び出します。
この関数は Qt 6.3 で導入されました。
hasNext(),fileName(),filePath(),fileInfo()も参照してください 。
QString QDirIterator::path() const
イテレータのベースディレクトリを返します。
© 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.