QDir Class

QDir クラスは、ディレクトリ構造とその内容へのアクセスを提供します。詳細...

ヘッダ #include <QDir>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core

このクラスは等価比較可能です。

注意:このクラスの関数はすべてリエントラントです。

パブリック型

enum Filter { Dirs, AllDirs, Files, Drives, NoSymLinks, …, CaseSensitive }
flags Filters
enum SortFlag { Name, Time, Size, Type, Unsorted, …, LocaleAware }
flags SortFlags

パブリック関数

QDir(const QString &path = QString())
(since 6.0) QDir(const std::filesystem::path &path)
QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
(since 6.0) QDir(const std::filesystem::path &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)
QDir(const QDir &dir)
~QDir()
QString absoluteFilePath(const QString &fileName) const
QString absolutePath() const
QString canonicalPath() const
bool cd(const QString &dirName)
bool cdUp()
qsizetype count() const
QString dirName() const
QFileInfoList entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QFileInfoList entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
bool exists(const QString &name) const
bool exists() const
QString filePath(const QString &fileName) const
(since 6.0) std::filesystem::path filesystemAbsolutePath() const
(since 6.0) std::filesystem::path filesystemCanonicalPath() const
(since 6.0) std::filesystem::path filesystemPath() const
QDir::Filters filter() const
bool isAbsolute() const
bool isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const
bool isReadable() const
bool isRelative() const
bool isRoot() const
bool makeAbsolute()
(since 6.3) bool mkdir(const QString &dirName, QFileDevice::Permissions permissions) const
bool mkdir(const QString &dirName) const
bool mkpath(const QString &dirPath) const
QStringList nameFilters() const
QString path() const
void refresh() const
QString relativeFilePath(const QString &fileName) const
bool remove(const QString &fileName)
bool removeRecursively()
bool rename(const QString &oldName, const QString &newName)
bool rmdir(const QString &dirName) const
bool rmpath(const QString &dirPath) const
void setFilter(QDir::Filters filters)
void setNameFilters(const QStringList &nameFilters)
void setPath(const QString &path)
(since 6.0) void setPath(const std::filesystem::path &path)
void setSorting(QDir::SortFlags sort)
QDir::SortFlags sorting() const
void swap(QDir &other)
QDir &operator=(QDir &&other)
QDir &operator=(const QDir &dir)
QString operator[](qsizetype pos) const

静的パブリックメンバ

void addSearchPath(const QString &prefix, const QString &path)
(since 6.0) void addSearchPath(const QString &prefix, const std::filesystem::path &path)
QString cleanPath(const QString &path)
QDir current()
QString currentPath()
QFileInfoList drives()
QString fromNativeSeparators(const QString &pathName)
QDir home()
QString homePath()
bool isAbsolutePath(const QString &path)
bool isRelativePath(const QString &path)
QChar listSeparator()
bool match(const QString &filter, const QString &fileName)
bool match(const QStringList &filters, const QString &fileName)
QDir root()
QString rootPath()
QStringList searchPaths(const QString &prefix)
QChar separator()
bool setCurrent(const QString &path)
void setSearchPaths(const QString &prefix, const QStringList &searchPaths)
QDir temp()
QString tempPath()
QString toNativeSeparators(const QString &pathName)
bool operator!=(const QDir &lhs, const QDir &rhs)
bool operator==(const QDir &lhs, const QDir &rhs)

詳細説明

QDir は、パス名の操作、パスとファイルに関する情報へのアクセス、基本的なファイルシステムの操作に使用されます。また、Qt のリソースシステムにアクセスするためにも使用できます。

Qtでは、URLのパス区切りとして"/"が使用されるのと同じように、"/"を普遍的なディレクトリ区切りとして使用します。ディレクトリ区切り文字として常に"/"を使用する場合、Qtはパスをオペレーティングシステムに合わせて変換します。

QDir は、相対パスまたは絶対パスのいずれかを使用してファイルを指すことができます。絶対パスは、ディレクトリ区切り文字で始まります(Windows では、オプションでドライブ指定が前に付きます)。相対ファイル名は、ディレクトリ名またはファイル名で始まり、カレントディレクトリからの相対パスを指定します。

絶対パスの例

QDir("/home/user/Documents")
QDir("C:/Users")

Windowsでは、上記の2番目の例は、ファイルへのアクセスに使用される場合、C:\Users に変換されます。

相対パスの例:

QDir("images/landscape.png")

isRelative() またはisAbsolute() 関数を使用すると、QDir で使用されているファイル・パスが相対パスか絶対パスかを確認できます。相対 QDir を絶対 QDir に変換するには、makeAbsolute() を呼び出します。

注意: コロン (:) で始まるパスは、QResource を示すため、常に絶対パスと見なされます。

ディレクトリのパスはpath() 関数で取得でき、新しいパスはsetPath() 関数で設定できる。ディレクトリの絶対パスは、absolutePath() を呼び出すことで求められる。

ディレクトリ名は、dirName ()関数を使用して求める。この関数は通常、ディレクトリの場所を指定する絶対パスの最後の要素を返します。ただし、QDir が現在のディレクトリを表している場合は、"." を返すこともあります。

QDir("Documents/Letters/Applications").dirName() // "Applications"
QDir().dirName()                                 // "."

ディレクトリのパスは、cd() およびcdUp() 関数を使用して変更することもできる。cd() に既存のディレクトリ名を指定して呼び出すと、QDir オブジェクトはそのディレクトリを表すようにディレクトリを変更します。cdUp ()関数は、QDirオブジェクトのディレクトリを変更し、親ディレクトリを参照するようにします。つまり、cd("..")はcdUp ()と同等です。

ディレクトリは、mkdir() で作成し、rename() で名前を変更し、rmdir() で削除することができます。

指定した名前のディレクトリが存在するかどうかは、exists()でテストでき、ディレクトリのプロパティは、isReadable()、isAbsolute()、isRelative()、isRoot()でテストできる。

refresh() 関数は、ディレクトリのデータをディスクから再読み込みする。

ファイルとディレクトリの内容

ディレクトリには、ファイル、ディレクトリ、シンボリック・リンクを表す多数のエントリが含まれる。ディレクトリ内のエントリ数は、count() で返される。ディレクトリ内の全エントリ名の文字列リストは、entryList() で取得できる。各エントリに関する情報が必要な場合は、entryInfoList() を使用して、QFileInfo オブジェクトのリストを取得する。

ディレクトリ内のファイルやディレクトリへのパスは、filePath() およびabsoluteFilePath() を使用して構築できます。filePath() 関数は、QDir オブジェクトのパスからの相対パスを返します。absoluteFilePath() は、指定されたファイルまたはディレクトリへの絶対パスを返します。これらの関数はどちらも、ファイルやディレクトリが存在するかどうかをチェックしません。

QDir directory("Documents/Letters");
QString path = directory.filePath("contents.txt");
QString absolutePath = directory.absoluteFilePath("contents.txt");

ファイルを削除するには、remove ()関数を使用します。ディレクトリは、ファイルと同じ方法では削除できません。代わりにrmdir() を使用して削除します。

QDir オブジェクトにフィルタを適用することで、entryList() およびentryInfoList() から返されるエントリの数を減らすことができます。ファイル名が一致する必要があるワイルドカードを含むパターンを指定する名前フィルタ、エントリのプロパティを選択し、ファイルとディレクトリを区別できる属性フィルタ、およびソート順を適用することができます。

名前フィルターは、setNameFilters ()に渡される文字列のリストである。属性フィルタは、Filters のビット OR の組み合わせで構成され、setFilter() を呼び出す際に指定される。ソート順は、setSorting() と、SortFlags のビット OR の組み合わせで指定する。

ファイル名がフィルタに一致するかどうかは、match() 関数で調べることができる。

また、entryList() やentryInfoList() を呼び出す際に、以前に定義した動作を上書きするために、 フィルタフラグやソート順フラグを指定することもできる。

現在のディレクトリとその他の特別なパス

いくつかの一般的なディレクトリへのアクセスは、QDirオブジェクトを返すいくつかの静的関数で提供されています。また、これらに対応する文字列を返す関数もあります:

QDirQString戻り値
current()currentPath()アプリケーションの作業ディレクトリ
home()homePath()ユーザーのホームディレクトリ
root()rootPath()ルートディレクトリ
temp()tempPath()システムの一時ディレクトリ

setCurrent() 静的関数を使用して、アプリケーションの作業ディレクトリを設定することもできる。

アプリケーションの実行可能ファイルを含むディレクトリを見つけたい場合は、QCoreApplication::applicationDirPath() を参照してください。

drives() 静的関数は、ファイリング・システムを含む各デバイスのルート・ディレクトリの リストを提供する。Unix システムの場合、この関数は単一のルート・ディレクトリ "/" を含むリストを返します。Windows の場合、リストには通常C:/ が含まれ、ユーザ・システムの構成によってはD:/ などの他のドライブ文字が含まれることもあります。

パスの操作と文字列

パスのその時点でのカレントディレクトリを参照する". "要素、親ディレクトリを参照する". "要素、シンボリックリンクを含むパスは、canonicalPath ()関数を使用して、正規形に縮小することができます。

また、cleanPath() を使って冗長な "/" や "..." 要素を削除することで、パスを簡略化することもできる。

ユーザーのプラットフォームに合わせたネイティブな表現でパスを表示できるようにする必要がある場合もあります。静的なtoNativeSeparators() 関数は、指定されたパスのコピーを返し、その中の各ディレクトリのセパレータは、基礎となるオペレーティング・システムの適切なセパレータに置き換えられる。

ディレクトリが存在するかどうかを調べます:

QDirdir("example");if(!dir.exists())    qWarning("Cannot find the example directory");

(静的便利関数QFileInfo::exists ()またはQFile::exists ()を使うこともできる)。

ディレクトリの走査とファイルの読み込み:

QDirdir=QDir::root();// "/"if(!dir.cd("tmp")) {// "/tmp"    qWarning("Cannot find the \"/tmp\" directory");
}else{ QFilefile(dir.filePath("ex1.txt"));// "/tmp/ex1.txt" if(!file.open(QIODevice::ReadWrite))        qWarning("Cannot create the file %s", file.name());
}

カレントディレクトリにあるすべてのファイル(シンボリックリンクを除く)を、サイズの小さいものから順に並べるプログラム:

#include <QDir>
#include <iostream>

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);
    QDir dir;
    dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks);
    dir.setSorting(QDir::Size | QDir::Reversed);

    QFileInfoList list = dir.entryInfoList();
    std::cout << "     Bytes Filename" << std::endl;
    for (int i = 0; i < list.size(); ++i) {
        QFileInfo fileInfo = list.at(i);
        std::cout << qPrintable(QString("%1 %2").arg(fileInfo.size(), 10)
                                                .arg(fileInfo.fileName()));
        std::cout << std::endl;
    }
    return 0;
}

プラットフォーム固有の問題

Androidでは、コンテンツURIを扱う際にいくつかの制限が適用されます:

QFileInfo,QFile,QFileDialog,QCoreApplication::applicationDirPath(),Fetch More Exampleも参照してください

メンバ型ドキュメント

enum QDir::Filter
flags QDir::Filters

この enum は、QDir で利用可能なフィルタリングオプションを記述します ; 例えば、entryList() やentryInfoList() の場合です。フィルタ値は、ビット OR 演算子を使用して、以下のリストの値を組み合わせることで指定します:

定数説明
QDir::Dirs0x001フィルタにマッチするディレクトリをリストする。
QDir::AllDirs0x400つまり、ディレクトリ名にフィルタを適用しません。
QDir::Files0x002ファイルをリストする。
QDir::Drives0x004ディスクドライブをリストする(Unixでは無視される)。
QDir::NoSymLinks0x008シンボリックリンクをリストしない(シンボリックリンクをサポートしていないオペレーティング・システムでは無視される)。
QDir::NoDotAndDotDotNoDot | NoDotDot特別な項目 "." と "..." をリストしない。
QDir::NoDot0x2000特殊エントリ". "を列挙しない。
QDir::NoDotDot0x4000特殊エントリ「...」を列挙しない。
QDir::AllEntriesDirs | Files | Drivesディレクトリ、ファイル、ドライブ、およびシンボリックリンクを一覧表示します(Systemを指定しない限り、リンク切れのシンボリックリンクは一覧表示されません)。
QDir::Readable0x010アプリケーションが読み取り可能なファイルをリストします。Readable "値は、"Dirs "または "Files "と組み合わせる必要があります。
QDir::Writable0x020アプリケーションが書き込み可能なファイルをリストします。Writable 値は、Dirs または Files と組み合わせる必要があります。
QDir::Executable0x040アプリケーションが実行アクセス権を持っているファイルをリストします。Executable 値を Dirs または Files と組み合わせる必要があります。
QDir::Modified0x080変更されたファイルのみをリストする(Unixでは無視される)。
QDir::Hidden0x100隠しファイルをリストする(Unixでは". "で始まるファイル)。
QDir::System0x200システム・ファイルをリストする(Unixでは、FIFO、ソケット、デバイス・ファイルが含まれる。Windowsでは、.lnk ファイルが含まれる)。
QDir::CaseSensitive0x800フィルターは大文字と小文字を区別する。

ファイルやディレクトリのリストをフィルタリングするためにFilter列挙値を使用する関数は、NoSymLinks値を設定しない限り、ファイルやディレクトリへのシンボリックリンクを含んでしまいます。

デフォルトで構築されたQDir は、パーミッションに基づいてファイルをフィルタリングしないため、entryList() とentryInfoList() は、読み取り可能、書き込み可能、実行可能、またはその3つの組み合わせであるすべてのファイルを返します。このため、デフォルトは書きやすく、同時に便利である。

例えば、ReadableWritableFiles フラグを設定すると、アプリケーションが読み取りアクセス、書き込みアクセス、またはその両方を持つすべてのファイルをリストすることができる。この組み合わせにDirsDrives フラグも含めると、すべてのドライブ、 ディレクトリ、アプリケーションが読み取り、書き込み、または実行できる すべてのファイル、およびそのようなファイル/ディレクトリへのシンボリックリンク を一覧表示できる。

ディレクトリのパーミッションを取得するには、entryInfoList ()関数を使用して関連するQFileInfo オブジェクトを取得し、QFileInfo::permissions ()関数を使用して各ファイルのパーミッションと所有者を取得します。

Filters型はQFlags<Filter>のtypedefである。これは、Filter値のORの組み合わせを格納します。

enum QDir::SortFlag
flags QDir::SortFlags

この列挙型は、QDir 、例えばentryList() やentryInfoList() で利用可能なソートオプションを記述します。ソート値は、以下のリストの値を OR することで指定します:

定数説明
QDir::Name0x00名前で並べ替え。
QDir::Time0x01時間(修正時間)でソートする。
QDir::Size0x02ファイルサイズ順
QDir::Type0x80ファイルタイプ(拡張子)でソートする。
QDir::Unsorted0x03ソートしない
QDir::NoSort-1デフォルトではソートされません。
QDir::DirsFirst0x04ディレクトリを先に並べ、次にファイルを並べる。
QDir::DirsLast0x20ファイルを最初に並べ、次にディレクトリを並べる。
QDir::Reversed0x08ソート順を逆にする。
QDir::IgnoreCase0x10大文字小文字を区別せずにソートする。
QDir::LocaleAware0x40現在のロケール設定を使って適切にソートする。

最初の4つのうち1つしか指定できません。

DirsFirst と Reversed の両方を指定した場合、ディレクトリが最初に並びますが、順序は逆になります。

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

メンバ関数のドキュメント

QDir::QDir(const QString &path = QString())

与えられたディレクトリpath を指す QDir を構築します。path が空の場合、プログラムの作業ディレクトリ (".") が使用されます。

currentPath()も参照してください

[since 6.0] QDir::QDir(const std::filesystem::path &path)

与えられたディレクトリpath を指す QDir を構築します。path が空の場合、プログラムの作業ディレクトリ (".") が使用されます。

この関数は Qt 6.0 で導入されました。

currentPath()も参照してください

QDir::QDir(const QString &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

パスpath を持つ QDir を構築します。この QDir は、nameFilter を用いて名前で、filters を用いて属性でエントリをフィルタリングします。また、sort を使用して名前をソートします。

デフ ォル トnameFilter は空文字列で、 何も除外 し ません。 デフ ォル トfiltersAllEntries で、 こ れ も 何も除外 し ません。デフォルトのsort は、Name |IgnoreCase 、つまり大文字小文字を区別せずに名前をソートする。

path が空文字列の場合、QDir は "." (カレントディレクトリ) を使用します。nameFilter が空文字列の場合、QDir は名前フィルタ "*" (すべてのファイル) を使用します。

注意: path は存在する必要はない。

exists()、setPath()、setNameFilters()、setFilter()、setSorting()も参照のこと

[since 6.0] QDir::QDir(const std::filesystem::path &path, const QString &nameFilter, QDir::SortFlags sort = SortFlags(Name | IgnoreCase), QDir::Filters filters = AllEntries)

パスpath を持つ QDir を構築します。この QDir は、nameFilter を用いて名前で、filters を用いて属性でエントリをフィルタリングします。また、sort を使用して名前をソートします。

デフ ォル トnameFilter は空文字列で、 何も除外 し ません。 デフ ォル トfiltersAllEntries で、 こ れ も 何も除外 し ません。デフォルトのsortName |IgnoreCase 、つまり、大文字小文字を区別せずに名前でソートする。

path が空の場合、QDir は "." (カレントディレクトリ) を使用します。nameFilter が空文字列の場合、QDir は名前フィルタ "*" (すべてのファイル) を使用します。

注意: path は存在する必要はありません。

この関数は Qt 6.0 で導入されました。

exists(),setPath(),setNameFilters(),setFilter(),setSorting()も参照してください

QDir::QDir(const QDir &dir)

dir ディレクトリ用の QDir オブジェクトのコピーである QDir オブジェクトを構築します。

operator=()も参照してください

[noexcept] QDir::~QDir()

QDir オブジェクトを破棄し、リソースを解放する。これは、ファイルシステムの基礎となるディレクトリには影響しません。

QString QDir::absoluteFilePath(const QString &fileName) const

ディレクトリ内のファイルの絶対パス名を返す。ファイルが実際にディレクトリに存在するかどうかはチェックしないexists() を参照。fileName の冗長な多重区切り文字や "." および ".." ディレクトリは削除されない (cleanPath() を参照)。

relativeFilePath()、filePath()、canonicalPath()参照。

QString QDir::absolutePath() const

絶対パス("/"で始まるパス、またはドライブ指定)を返します。このパスにはシンボリックリンクが 含まれることがありますが、冗長な"."、"... "や複数のセパレータが含まれることはありません。

setPath()、canonicalPath()、exists()、cleanPath()、dirName()、absoluteFilePath()も参照

[static] void QDir::addSearchPath(const QString &prefix, const QString &path)

prefix の検索パスにpath を追加する。

setSearchPaths()も参照してください

[static, since 6.0] void QDir::addSearchPath(const QString &prefix, const std::filesystem::path &path)

これはオーバーロードされた関数です。

この関数は Qt 6.0 で導入されました。

QString QDir::canonicalPath() const

正規パス、つまりシンボリックリンクや冗長な". "や"... "要素を含まないパスを返す。

シンボリックリンクのないシステムでは、この関数は常にabsolutePath() が返すのと同じ文字列を返します。正規パスが存在しない場合 (通常はシンボリックリンクのぶら下がりによるもの)、 canonicalPath() は空の文字列を返します。

QString bin = "/local/bin";         // where /local/bin is a symlink to /usr/bin
QDir binDir(bin);
QString canonicalBin = binDir.canonicalPath();
// canonicalBin now equals "/usr/bin"

QString ls = "/local/bin/ls";       // where ls is the executable "ls"
QDir lsDir(ls);
QString canonicalLs = lsDir.canonicalPath();
// canonicalLS now equals "/usr/bin/ls".

path()、absolutePath()、exists()、cleanPath()、dirName()、absoluteFilePath()も参照

bool QDir::cd(const QString &dirName)

QDir のディレクトリをdirName に変更する。

新しいディレクトリが存在する場合はtrue を返し、存在しない場合はfalse を返す。新しいディレクトリが存在しない場合、論理 cd() 操作は実行されないことに注意。

cd("...")を呼び出すことは、cdUp()を呼び出すことと同じである。

cdUp()、isReadable()、exists()、path()も参照

bool QDir::cdUp()

QDir のカレントディレクトリから1つ上に移動してディレクトリを変更する。

新しいディレクトリが存在する場合はtrue を返し、存在しない場合はfalse を返す。新しいディレクトリが存在しない場合、論理 cdUp()操作は実行されないことに注意。

注: Androidでは、これはコンテンツURIには対応していない。詳細については、DocumentFile.getParentFile()を参照。

cd()、isReadable()、exists()、path()も参照

[static] QString QDir::cleanPath(const QString &path)

path 、ディレクトリの区切り文字を正規化し(つまり、プラットフォーム固有の区切り文字を"/"に変換し)、冗長な区切り文字を削除した上で、". "や". "を(可能な限り)解決して返します。

シンボリックリンクは保持される。この関数は正規パスを返すのではなく、入力の最も単純なバージョンを返す。たとえば、"./local "は "local "に、"local/../bin "は "bin "に、"/local/usr/../bin "は"/local/bin "になる。

absolutePath() およびcanonicalPath()も参照のこと

qsizetype QDir::count() const

ディレクトリ内のディレクトリとファイルの総数を返します。

entryList().count() と同じです。

注意: Qt 6.5 より前のバージョンでは、この関数はqsizetype ではなくuint を返していました。

operator[]() およびentryList()も参照してください

[static] QDir QDir::current()

アプリケーションのカレント・ディレクトリを返す。

このディレクトリは、カレント・ディレクトリの絶対パスを使用して構築されるため、path() はabsolutePath() と同じになります。

currentPath()、setCurrent()、home()、root()、temp()も参照

[static] QString QDir::currentPath()

アプリケーションのカレント・ディレクトリの絶対パスを返す。カレント・ディレクトリは、QDir::setCurrent() で最後に設定されたディレクトリ、または、 () が一度も呼び出されなかった場合は、このアプリケーションが親プロセスによって起動されたときのディレクトリである。

current()、setCurrent()、homePath()、rootPath()、tempPath()、QCoreApplication::applicationDirPath()も参照

QString QDir::dirName() const

ディレクトリの名前を返します。これはパスと同じではありません。例えば、"mail "という名前のディレクトリは、"/var/spool/mail "というパスを持っているかもしれません。ディレクトリに名前がない場合(例えば、ルートディレクトリである場合)、空の文字列が返される。

この名前を持つディレクトリが実際に存在するかどうかのチェックは行われない; しかし、exists()を参照のこと。

path()、filePath()、absolutePath()、absoluteFilePath()も参照の こと。

[static] QFileInfoList QDir::drives()

このシステムのルート・ディレクトリのリストを返す。

Windowsでは、"C:/"、"D:/"などを含むQFileInfo オブジェクトのリストを返す。取り出し可能なメディアが空のドライブは返されない。他のオペレーティング・システムでは、1つのルート・ディレクトリ(すなわち "/")だけを含むリストを返す。

root() およびrootPath()も参照の こと。

QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

事前にsetNameFilters() とsetFilter() で設定した名前フィルタと属性フィルタに従って並べ替え、setSorting() で設定したフラグに従ってソートした、 ディレクトリ内のすべてのファイルとディレクトリのQFileInfo オブジェクトのリストを返す。

名前フィルタ、ファイル属性フィルタ、およびソート指定は、nameFiltersfilters 、およびsort 引数を使用して上書きすることができる。

ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない場合は、空のリストを返します。

entryList()、setNameFilters()、setSorting()、setFilter()、isReadable()、exists()も参照のこと

QFileInfoList QDir::entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

これはオーバーロードされた関数である。

事前にsetNameFilters() とsetFilter() で設定された名前と属性のフィルタに従って並び替えられ、setSorting() で設定されたフラグに従ってソートされた、 ディレクトリ内のすべてのファイルとディレクトリのQFileInfo オブジェクトのリストを返す。

属性フィルタと並べ替えの指定は、filterssort 引数を使用して上書きすることができる。

ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない 場合は、空のリストを返します。

entryList()、setNameFilters()、setSorting()、setFilter()、isReadable()、exists()も参照

QStringList QDir::entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

事前にsetNameFilters() とsetFilter() で設定された名前フィルタと属性フィルタに従って並べ替えられ、setSorting() で設定されたフラグに従ってソートされた、 ディレクトリ内のすべてのファイルとディレクトリの名前のリストを返す。

名前フィルタ、ファイル属性フィルタ、およびソート指定は、nameFiltersfilters 、およびsort 引数を使用して上書きすることができる。

ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない場合は、空のリストを返します。

entryInfoList()、setNameFilters()、setSorting()、setFilter()も参照のこと

QStringList QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

これはオーバーロードされた関数である。

事前にsetNameFilters() とsetFilter() で設定された名前と属性のフィルタに従って並び替えられ、setSorting() で設定されたフラグに従ってソートされた、 ディレクトリ内のすべてのファイルとディレクトリの名前のリストを返す。

属性フィルタと並べ替えの指定は、filterssort 引数を使用して上書きすることができる。

ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない場合は、空のリストを返します。

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

entryInfoList()、setNameFilters()、setSorting()、setFilter()も参照

bool QDir::exists(const QString &name) const

name というファイルが存在すればtrue を返し、そうでなければ false を返す。

name に絶対ファイル・パスが含まれていない限り、ファイル名はディレクトリ自体からの相対ファ イルであると仮定されるため、この関数は通常、ディレクトリ内のファイルの存在を確認する ために使用される。

QFileInfo::exists() およびQFile::exists()も参照のこと

bool QDir::exists() const

これはオーバーロードされた関数である。

ディレクトリが存在する場合はtrue を返し、そうでない場合はfalse を返します(同じ名前のファイルが見つかった場合、この関数は偽を返します)。

引数を受け付けるこの関数のオーバーロードは、ディレクトリ内にファイルやディレクトリが存在するかどうかをテストするために使用されます。

QFileInfo::exists() およびQFile::exists()も参照

QString QDir::filePath(const QString &fileName) const

ディレクトリ内のファイルのパス名を返す。ファイルが実際にディレクトリに存在するかどうかはチェックしないexists() を参照。QDir が相対パスである場合、返されるパス名も相対パスになります。fileName の冗長な多重区切り文字や "." および ".." ディレクトリは削除されない (cleanPath() を参照)。

dirName()、absoluteFilePath()、isRelative()、canonicalPath()も参照

[since 6.0] std::filesystem::path QDir::filesystemAbsolutePath() const

std::filesystem::path としてabsolutePath() を返す。

この関数は Qt 6.0 で導入されました。

absolutePath()も参照してください

[since 6.0] std::filesystem::path QDir::filesystemCanonicalPath() const

std::filesystem::path としてcanonicalPath() を返す。

この関数は Qt 6.0 で導入されました。

canonicalPath()も参照してください

[since 6.0] std::filesystem::path QDir::filesystemPath() const

std::filesystem::path としてpath() を返す。

この関数は Qt 6.0 で導入されました。

path()も参照してください

QDir::Filters QDir::filter() const

setFilter() で設定した値を返す。

setFilter()も参照

[static] QString QDir::fromNativeSeparators(const QString &pathName)

'/' をファイルセパレータとして使用してpathName を返す。例えばWindowsでは、 fromNativeSeparators("c:\\winnt\\system32") は "c:/winnt/system32" を返す。

Unixなど、オペレーティング・システムによっては、返される文字列が引数 と同じになることがある。

toNativeSeparators() およびseparator()も参照

[static] QDir QDir::home()

ユーザのホーム・ディレクトリを返す。

このディレクトリは、ホーム・ディレクトリの絶対パスを使用して構築され、path() とabsolutePath() が同じになるようにします。

詳細はhomePath() を参照。

drives()、current()、root()、temp()も参照

[static] QString QDir::homePath()

ユーザーのホーム・ディレクトリの絶対パスを返します。

Windowsでは、この関数は現在のユーザのプロファイルのディレクトリを返します。通常、これは

C:/Users/Username

toNativeSeparators() 関数を使用して、セパレータをオペレーティング・システムに適したものに変換します。

現在のユーザ・プロファイルのディレクトリが存在しないか、または取得できない場合は、 存在して利用可能なパスが見つかるまで、以下の選択肢が(指定された順序で)チェックされます:

  1. 環境変数USERPROFILE で指定されたパス。
  2. HOMEDRIVEHOMEPATH 環境変数を連結したパス。
  3. 環境変数HOME で指定されたパス。
  4. SystemDrive 環境変数を使用する)rootPath() 関数によって返されるパス。
  5. C:/ ディレクトリ。

Windows以外のオペレーティング・システムでは、HOME 環境変数が存在する場合はそれが使用され、存在しない場合はrootPath() が返すパスが使用される。

home()、currentPath()、rootPath()、tempPath()も参照のこと

bool QDir::isAbsolute() const

ディレクトリのパスが絶対パスであればtrue を返し、そうでなければfalse を返す。isAbsolutePath() を参照。

注意: コロン (:) で始まるパスは、QResource を示すため、常に絶対パスとみなされます。

isRelative()、makeAbsolute()、cleanPath()も参照

[static] bool QDir::isAbsolutePath(const QString &path)

path が絶対パスであればtrue を返し、相対パスであればfalse を返す。

注意: コロン (:) で始まるパスは、QResource を示すため、常に絶対パスとみなされる。

isAbsolute()、isRelativePath()、makeAbsolute()、cleanPath()、QResourceも参照

bool QDir::isEmpty(QDir::Filters filters = Filters(AllEntries | NoDotAndDotDot)) const

ディレクトリが空かどうかを返します。

QDir::AllEntries | QDir::NoDotAndDotDot のフィルタを使用したcount() == 0 と同等ですが、ディレクトリに少なくとも 1 つのエントリが含まれているかどうかをチェックするだけなので、より高速です。

注意: QDir::NoDotAndDotDot を含むようにfilters フラグを設定しない限り (デフォルト値のように)、 空のディレクトリはありません。

count()、entryList()、setFilter()も参照のこと

bool QDir::isReadable() const

ディレクトリが読み取り可能で、ファイルを名前で開くことができる場合はtrue を返し、そうでない場合はfalse を返す。

警告: この関数のfalse値は、ディレクトリ内のファイルにアクセスできないことを保証するものではありません。

QFileInfo::isReadable()も参照してください

bool QDir::isRelative() const

ディレクトリパスが相対パスであればtrue を返し、そうでなければ false を返す。(Unix では、"/" で始まらないパスは相対パスです)。

注意: コロン (:) で始まるパスは、QResource を示すため、常に絶対パスとみなされます。

makeAbsolute()、isAbsolute()、isAbsolutePath()、cleanPath()も参照のこと

[static] bool QDir::isRelativePath(const QString &path)

path が相対パスの場合はtrue を返し、絶対パスの場合はfalse を返す。

注意: コロン (:) で始まるパスは、QResource を表すため、常に絶対パスとみなされる。

isRelative()、isAbsolutePath()、makeAbsolute()も参照

bool QDir::isRoot() const

ディレクトリがルート・ディレクトリの場合はtrue を返し、そうでない場合はfalse を返す。

注意: ディレクトリがルート・ディレクトリへのシンボリック・リンクの場合、この関数はfalse を返す。これをテストしたい場合は、canonicalPath() を使用してください。

QDirdir("/tmp/root_link"); dir=dir.canonicalPath();if(dir.isRoot())    qWarning("It is a root link");

root() およびrootPath()も参照のこと

[static constexpr noexcept] QChar QDir::listSeparator()

ネイティブのパスリスト区切り文字: Unix では ':'、Windows では ';' を返します。

separator()も参照

bool QDir::makeAbsolute()

ディレクトリパスを絶対パスに変換する。すでに絶対パスの場合は何も起こらない。変換に成功した場合はtrue を返し、失敗した場合はfalse を返す。

isAbsolute()、isAbsolutePath()、isRelative() およびcleanPath()も参照

[static] bool QDir::match(const QString &filter, const QString &fileName)

fileName がワイルドカード(グロブ)パターンfilter にマッチする場合はtrue を返し、マッチしない場合はfalse を返す。filter には、スペースまたはセミコロンで区切られた複数のパターンを含めることができる。マッチングは大文字小文字を区別しない。

QRegularExpression::fromWildcard()、entryList()、entryInfoList()も参照

[static] bool QDir::match(const QStringList &filters, const QString &fileName)

これはオーバーロードされた関数である。

fileNamefilters のリスト中のワイルドカード(グロブ)パターンのいずれかにマッチする場合はtrue を返し、マッチしない場合はfalse を返す。マッチングは大文字小文字を区別しない。

QRegularExpression::fromWildcard()、entryList()、entryInfoList()も参照

[since 6.3] bool QDir::mkdir(const QString &dirName, QFileDevice::Permissions permissions) const

dirName というサブディレクトリを作成する。

成功した場合はtrue を返し、そうでない場合はfalse を返す。

この関数を呼び出したときにすでにディレクトリが存在する場合は、false を返します。

作成されたディレクトリのパーミッションはpermissions に設定される。

POSIXシステムでは、パーミッションはumask の値に影響される。

Windowsでは、パーミッションはACLを使用してエミュレートされる。これらのACLは、グループが他のグループよりも少ないパーミッションを与えられている場合、非正規の順序になることがある。このようなパーミッションを持つファイルやディレクトリは、プロパティダイアログのセキュリティタブを開いたときに警告が発生します。グループに他のグループに与えられている全てのパーミッションを与えることで、そのような警告を避けることができます。

この関数は Qt 6.3 で導入されました。

rmdir()も参照してください

bool QDir::mkdir(const QString &dirName) const

これはオーバーロードされた関数です。

デフォルトのパーミッションでdirName というサブディレクトリを作成する。

POSIX システムでは、デフォルトでumask で許可されているすべてのパーミッションが付与されます。Windows では、新しいディレクトリは親ディレクトリのパーミッションを継承します。

bool QDir::mkpath(const QString &dirPath) const

ディレクトリパスdirPath を作成します。

この関数は、ディレクトリの作成に必要なすべての親ディレクトリを作成します。

成功した場合はtrue を返し、失敗した場合はfalse を返します。

この関数が呼ばれたときにすでにパスが存在する場合は、true を返します。

rmpath()も参照

QStringList QDir::nameFilters() const

setNameFilters() で設定した文字列リストを返す。

setNameFilters()も参照

QString QDir::path() const

パスを返す。このパスにはシンボリックリンクが含まれることがありますが、 決して冗長な "."、".." や複数のセパレータは含まれません。

返されるパスは、絶対パスでも相対パスでもかまいません (setPath() を参照)。

setPath()、absolutePath()、exists()、cleanPath()、dirName()、absoluteFilePath()、toNativeSeparators()、makeAbsolute()も参照

void QDir::refresh() const

ディレクトリ情報を更新する。

QString QDir::relativeFilePath(const QString &fileName) const

fileName のディレクトリからの相対パスを返す。

QDir dir("/home/bob");
QString s;

s = dir.relativeFilePath("images/file.jpg");     // s is "images/file.jpg"
s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt"

absoluteFilePath()、filePath() およびcanonicalPath()も参照

bool QDir::remove(const QString &fileName)

fileName ファイルを削除する。

ファイルの削除に成功した場合はtrue を返し、失敗した場合はfalse を返す。

bool QDir::removeRecursively()

ディレクトリを削除する。

成功すればtrue を返し、そうでなければ false を返す。

ファイルまたはディレクトリを削除できない場合、removeRecursively() は処理を続行し、可能な限り多くのファイルとサブディレクトリの削除を試みてから、false を返す。

ディレクトリがすでに削除されている場合、このメソッドはtrue を返します (期待される結果にはすでに到達しています)。

注意: この関数は、アプリケーション内部の小さなディレクトリ(テンポラリ・ディレクトリなど)を削除するためのものであり、ユーザーから見えるディレクトリを削除するためのものではありません。ユーザーの目に触れる操作では、エラーをより正確にユーザーに報告したり、エラーが発生した場合に解決策を提示したり、削除に数分かかる可能性があるため進行状況を表示したりすることが推奨されます。

bool QDir::rename(const QString &oldName, const QString &newName)

ファイルまたはディレクトリの名前をoldName からnewName に変更し、成功すれば真を返し、失敗すればfalse を返す。

ほとんどのファイル・システムでは、rename()が失敗するのは、oldName が存在しないか、新しい名前のファイルが既に存在する場合だけである。しかし、rename()が失敗する理由は他にもある。たとえば、少なくとも1つのファイル・システムでは、newName がオープン・ファイルを指している場合、rename()は失敗する。

oldName が(ディレクトリではなく)ファイルであり、すぐに名前を変更できない場合、Qt はoldNamenewName にコピーし、oldName を削除しようとします。

QFile::rename()も参照してください

bool QDir::rmdir(const QString &dirName) const

dirName で指定されたディレクトリを削除する。

rmdir()が成功するには、ディレクトリが空でなければならない。

成功した場合はtrue を返し、失敗した場合はfalse を返す。

mkdir()も参照

bool QDir::rmpath(const QString &dirPath) const

ディレクトリパスdirPath を削除します。

この関数は、dirPath のすべての親ディレクトリを削除します。これは mkpath(dirPath) の逆である。

成功すればtrue を返し、そうでなければfalse を返す。

mkpath()も参照

[static] QDir QDir::root()

ルート・ディレクトリを返す。

このディレクトリは、ルート・ディレクトリの絶対パスを使用して構築され、path() がabsolutePath() と同じになるようにします。

詳細はrootPath() を参照。

drives()、current()、home()、temp()も参照

[static] QString QDir::rootPath()

ルート・ディレクトリの絶対パスを返します。

Unixオペレーティング・システムでは"/"を返します。Windowsファイル・システムでは、通常 "c:/"を返す。

root()、drives()、currentPath()、homePath()、tempPath()も参照

[static] QStringList QDir::searchPaths(const QString &prefix)

prefix の検索パスを返す。

setSearchPaths() およびaddSearchPath()も参照

[static] QChar QDir::separator()

ネイティブのディレクトリ区切り文字を返します:Unixでは"/"、Windowsでは"◆"を返します。

ファイルパスを構築するためにこの関数を使用する必要はありません。常に "/" を使用する場合、Qt はパスをオペレーティングシステムに合わせて変換します。オペレーティングシステムのセパレータを使用してユーザーにパスを表示したい場合は、toNativeSeparators() を使用してください。

listSeparator()も参照して ください。

[static] bool QDir::setCurrent(const QString &path)

アプリケーションの現在の作業ディレクトリをpath に設定する。ディレクトリが正常に変更された場合はtrue を返し、そうでない場合はfalse を返す。

QString absolute = "/local/bin";
QString relative = "local/bin";
QFileInfo absFile(absolute);
QFileInfo relFile(relative);

QDir::setCurrent(QDir::rootPath());
// absFile and relFile now point to the same file

QDir::setCurrent("/tmp");
// absFile now points to "/local/bin",
// while relFile points to "/tmp/local/bin"

current()、currentPath()、home()、root()、temp()も参照

void QDir::setFilter(QDir::Filters filters)

entryList() およびentryInfoList() で使用されるフィルタをfilters に設定します。このフィルタは、entryList() およびentryInfoList() で返されるファイルの種類を指定するために使用されます。QDir::Filter を参照。

filter() およびsetNameFilters()も参照して ください。

void QDir::setNameFilters(const QStringList &nameFilters)

entryList() およびentryInfoList() で使用される名前フィルタを、nameFilters で指定されるフィルタ・リストに設定する。

各名前フィルタは、* および? のワイルドカードを理解するワイルドカード(グロビング)フィルタです。QRegularExpression::fromWildcard()を参照。

例えば、以下のコードでは、QDir に 3 つの名前フィルタを設定し、C++ ソース・ファイルに通常使用される拡張子を持つファイルのみがリストされるようにしています:

    QStringList filters;
    filters << "*.cpp" << "*.cxx" << "*.cc";
    dir.setNameFilters(filters);

nameFilters() およびsetFilter()も参照してください

void QDir::setPath(const QString &path)

ディレクトリのパスをpath に設定する。 パスは、冗長な "." や ".." 、複数のセパレータから削除される。このパスを持つディレクトリが実際に存在するかどうかのチェックは行われないが、exists() を使用して自分でチェックすることができる。

パスは絶対パスでも相対パスでもよい。絶対パスは、ディレクトリ区切り文字"/"(Windowsの場合、オプションでその前にドライブを指定する)で始まる。相対ファイル名は、ディレクトリ名またはファイル名で始まり、カレント・ディ レクトリからの相対パスを指定する。絶対パスの例は "/tmp/quartz"、相対パスの例は "src/fatlib" である。

path()、absolutePath()、exists()、cleanPath()、dirName()、absoluteFilePath()、isRelative()、makeAbsolute()も参照の こと。

[since 6.0] void QDir::setPath(const std::filesystem::path &path)

これはオーバーロードされた関数です。

この関数は Qt 6.0 で導入されました。

[static] void QDir::setSearchPaths(const QString &prefix, const QStringList &searchPaths)

接頭辞prefix からsearchPaths を持つファイル名に対する Qt の検索パスを設定または置換します。

ファイル名に接頭辞を指定するには、接頭辞の前にコロン 1 つをつけます(例:"images:undo.png"、"xmldocs:books.xml")。prefix には文字か数字しか入れられません(例:コロンやスラッシュは入れられません)。

Qt はこの検索パスを使用して、既知の接頭辞を持つファイルを検索します。検索パスのエントリは、最初のエントリから順番にテストされます。

QDir::setSearchPaths("icons", QStringList(QDir::homePath() + "/images"));
QDir::setSearchPaths("docs", QStringList(":/embeddedDocuments"));
...
QPixmap pixmap("icons:undo.png"); // will look for undo.png in QDir::homePath() + "/images"
QFile file("docs:design.odf"); // will look in the :/embeddedDocuments resource path

ファイル名のプレフィックスは、Windows のドライブ文字との衝突を避けるため、少なくとも 2 文字以上でなければなりません。

検索パスには、Qt Resource System へのパスを含めることができます。

searchPaths()も参照してください

void QDir::setSorting(QDir::SortFlags sort)

entryList() とentryInfoList() で使用されるソート順を設定する。

sort は、列挙型QDir::SortFlag の値を OR することで指定される。

sorting() およびSortFlagも参照

QDir::SortFlags QDir::sorting() const

setSorting() で設定された値を返す。

setSorting() およびSortFlagも参照

[noexcept] void QDir::swap(QDir &other)

このQDir インスタンスをother と交換する。この操作は非常に高速で、失敗することはない。

[static] QDir QDir::temp()

システムの一時ディレクトリを返す。

このディレクトリは、一時ディレクトリの絶対正規パスを使用して構築され、path() がabsolutePath() と同じになるようにします。

詳細はtempPath() を参照。

drives()、current()、home()、root()も参照

[static] QString QDir::tempPath()

システムの一時ディレクトリの絶対正規パスを返す。

Unix/Linuxシステムでは、これは環境変数TMPDIR 、またはTMPDIR が定義されていない場合は/tmp のパスである。Windowsでは、これは通常TEMP またはTMP 環境変数内のパスである。このメソッドが返すパスは、(ドライブの)ルート・ディレクトリでない限り、ディレクトリ区切り文字で終わることはない。

temp()、currentPath()、homePath()、rootPath()も参照

[static] QString QDir::toNativeSeparators(const QString &pathName)

'/' セパレータを、基本オペレーティングシステムに適したセパレータに変換してpathName を返す。

Windows では、toNativeSeparators("c:/winnt/system32") は、"c: \winntsystem32" を返します。

Unixなど、一部のオペレーティング・システムでは、返される文字列が引数と同じに なることがある。

fromNativeSeparators() およびseparator()も参照

[noexcept] QDir &QDir::operator=(QDir &&other)

Move-other をこのQDir インスタンスに割り当てる。

QDir &QDir::operator=(const QDir &dir)

dir オブジェクトのコピーを作成し、このQDir オブジェクトに割り当てる。

QString QDir::operator[](qsizetype pos) const

ファイル名リストの位置pos にあるファイル名を返す。entryList().at(index) と同等です。pos は、リスト内の有効なインデックス位置でなければなりません(つまり、0 <= pos <count())。

注意: Qt 6.5より前のバージョンでは、posqsizetype ではなくint でした。

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

関連する非会員

[noexcept] bool operator!=(const QDir &lhs, const QDir &rhs)

ディレクトリlhs とディレクトリrhs のパスが異なるか、ソートまたはフィルタ設定が異なる場合はtrue を返し、そうでない場合はfalse を返す。

// カレント・ディレクトリは "/usr/local" であるQDird1("/usr/local/bin"); d1.setFilter(QDir::実行可能ファイル);QDird2("bin");if(d1!=d2)    qDebug("They differ");

[noexcept] bool operator==(const QDir &lhs, const QDir &rhs)

ディレクトリlhs とディレクトリrhs のパスが同じで、ソートとフィルターの設定が同じであればtrue を返し、そうでなければfalse を返す。

// カレント・ディレクトリは "/usr/local" であるQDird1("/usr/local/bin");QDird2("bin");if(d1==d2)    qDebug("They're the same");

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