QDirIterator Class
QDirIterator クラスは、ディレクトリのエントリリスト用のイテレータを提供します。詳細...
| ヘッダー: | #include <QDirIterator> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QDirIterator は、入出力およびネットワーク機能の一部です。
パブリック型
| 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 またはディレクトリを引数として受け取ります。構築後、イテレータは最初のディレクトリエントリの直前に位置します。すべてのエントリを順次反復処理する方法は次のとおりです。
QDirIterator it("/etc",QDirIterator::Subdirectories);
while(it.hasNext()) {
QString dir=it.next();
qDebug() << dir;
// /etc/.
// /etc/..
// /etc/X11
// /etc/X11/fs
// ...
}名前でフィルタリングされたすべてのファイルを再帰的に検索して読み込む方法は次のとおりです:
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";
}next() およびnextFileInfo() 関数は、イテレータを進め、次のディレクトリエントリのパスまたはQFileInfo を返します。また、filePath() またはfileInfo() を呼び出すことで、イテレータを進めずに現在のファイルパスまたはQFileInfo を取得することもできます。fileName() 関数は、QDir::entryList() の動作と同様に、ファイル名のみを返します。
Qtのコンテナイテレータとは異なり、QDirIteratorは一方向性(つまり、ディレクトリを逆順に反復することはできない)であり、ランダムアクセスは許可されていません。
注:このクラスは 非推奨となっており、将来のQtリリースで削除される可能性があります。代わりにQDirListing を使用してください。「QDirIteratorからQDirListingへの移植」を参照してください。
関連項目: QDir およびQDir::entryList()。
メンバ型のドキュメント
enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags
この列挙型は、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 をフラグとして渡す必要があります。
hasNext()、next()、およびIteratorFlagsも参照してください 。
QDirIterator::QDirIterator(const QString &path, QDirIterator::IteratorFlags flags = NoIteratorFlags)
path を反復処理できる QDirIterator を生成します。flags を通じてオプションを指定することで、ディレクトリの反復処理方法を決定できます。
デフォルトでは、flags はNoIteratorFlags に設定されており、これはQDir::entryList()と同じ動作を行います。
注: 存在しないファイルを指すシンボリックリンクを一覧表示するには 、flags にQDir::System を指定する必要があります。
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 をフラグに指定する必要があります。
関連項目: 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 をフラグとして渡す必要があります。
関連項目: hasNext()、next()、IteratorFlags 、およびQDir::setNameFilters()も参照してください 。
[noexcept] QDirIterator::~QDirIterator()
QDirIterator を削除します。
QFileInfo QDirIterator::fileInfo() const
現在のディレクトリエントリに対するQFileInfo を返します。
filePath() およびfileName()も参照してください 。
QString QDirIterator::fileName() const
現在のディレクトリエントリのファイル名を、先頭にパスを付けずに返します。
この関数は、単一のディレクトリを反復処理する際に便利です。QDirIterator::Subdirectories フラグを使用している場合は、filePath() を使用してフルパスを取得できます。
filePath() およびfileInfo()も参照してください 。
QString QDirIterator::filePath() const
現在のディレクトリエントリの完全なファイルパスを返します。
fileInfo() およびfileName()も参照してください 。
bool QDirIterator::hasNext() const
ディレクトリに少なくとももう1つのエントリが存在する場合は `true ` を返し、そうでない場合は `false` を返します。
next()、nextFileInfo()、fileName()、filePath()、およびfileInfo()も参照してください 。
QString QDirIterator::next()
イテレータを次のエントリに進め、その新しいエントリのファイルパスを返します。hasNext() がfalse を返した場合、この関数は何もしないで、空のQString を返します。理想的には、このメソッドを呼び出す前に、常にhasNext() を呼び出すべきです。
fileName() またはfilePath() を呼び出すと、現在のエントリのファイル名やパスを取得でき、fileInfo() を呼び出すと、現在のエントリのQFileInfo を取得できます。
QFileInfo に関心がある場合は、next() の代わりにnextFileInfo() を呼び出してください。
hasNext()、nextFileInfo()、fileName()、filePath()、およびfileInfo()も参照してください 。
[since 6.3] QFileInfo QDirIterator::nextFileInfo()
イテレータを次のエントリに進め、この新しいエントリのファイル情報を返します。hasNext() がfalse を返した場合、この関数は何も行わず、空のQFileInfo を返します。理想的には、このメソッドを呼び出す前に、常にhasNext() を呼び出すべきです。
fileName() またはfilePath() を呼び出して現在のエントリのファイル名やパスを取得したり、fileInfo() を呼び出して現在のエントリのQFileInfo を取得したりできます。
単に `filePath()` が必要な場合は、`nextFileInfo()` の代わりに `next()` を呼び出してください。
この関数は Qt 6.3 で導入されました。
hasNext()、fileName()、filePath()、およびfileInfo()も参照してください 。
QString QDirIterator::path() const
イテレータのベースディレクトリを返します。
© 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.