QDirIterator Class

QDirIterator クラスは、ディレクトリエントリリストのイテレータを提供します。詳細...

Header: #include <QDirIterator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

パブリック型

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 を使用してください。

QDir およびQDir::entryList()も参照してください

メンバ型ドキュメント

enum QDirIterator::IteratorFlag
flags QDirIterator::IteratorFlags

この enum は、QDirIterator の動作を設定するために組み合わせることができるフラグを記述します。

定数説明
QDirIterator::NoIteratorFlags0x0デフォルト値。イテレータは、割り当てられたパスのエントリを返します。
QDirIterator::Subdirectories0x2すべてのサブディレクトリ内のエントリもリストします。
QDirIterator::FollowSymlinks0x1Subdirectories と組み合わせると、このフラグは、割り当てられたパスのすべてのサブディレクトリを、すべてのシンボリックリンクをたどってイテレートすることを可能にする。シンボリックリンクのループ (たとえば "link" => "." や "link" => "..") は自動的に検出され、無視される。

IteratorFlags型はQFlags<IteratorFlag>のtypedefである。IteratorFlag値のORの組み合わせを格納する。

メンバ関数の説明

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

dir の名前フィルタと正規フィルタを使用して、dir のエントリリストを反復処理できる QDirIterator を構築します。flags を介してオプションを渡すことで、ディレクトリをどのように反復処理するかを決めることができます。

デフォルトでは、flagsNoIteratorFlags となり、QDir::entryList() と同じ動作をする。

dir のソートは無視されます。

注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要がある。

hasNext()、next()、IteratorFlagsも参照

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

path を反復処理できる QDirIterator を構築します。flags を介してオプションを渡すことで、ディレクトリをどのように反復処理するかを決定できます。

デフォルトでは、flagsNoIteratorFlags となり、QDir::entryList() と同じ動作となります。

注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要があります。

hasNext()、next()、IteratorFlagsも参照してください

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

QDirIterator を構築します。この QDirIterator は、path を繰り返し処理し、名前フィルタリングは行わず、filters でエントリのフィルタリングを行います。flags を介してオプションを渡すことで、ディレクトリをどのように反復処理するかを決めることができます。

デフォルトでは、filtersQDir::NoFilterflagsNoIteratorFlags となり、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 を介してオプションを渡すことで、ディレクトリの反復処理方法を決定できます。

デフォルトでは、flagsNoIteratorFlags となり、QDir::entryList() と同じ動作となります。

例えば、以下のイテレータは、オーディオ・ファイルを反復処理するために使用できます:

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

注意: 存在しないファイルを指すシンボリックリンクをリストするには、QDir::System を flags に渡す必要がある。

hasNext()、next()、IteratorFlagsQDir::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 を返します。

現在のエントリのファイル名またはパスを取得するにはfileName() またはfilePath() を、現在のエントリのQFileInfo を取得するにはfileInfo() を呼び出す。

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

イテレータのベース・ディレクトリを返します。

©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。