QDir Class
QDir クラスは、ディレクトリ構造とその内容へのアクセスを提供します。詳細...
ヘッダ | #include <QDir> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
- 継承メンバを含む全メンバ一覧
- QDir はInput/Output and NetworkingandImplicitly Shared Classes に含まれます。
このクラスは等価比較可能です。
注意:このクラスの関数はすべてリエントラントです。
パブリック型
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 では、オプションでドライブ指定が前に付きます)。相対ファイル名は、ディレクトリ名またはファイル名で始まり、カレントディレクトリからの相対パスを指定します。
絶対パスの例
Windowsでは、上記の2番目の例は、ファイルへのアクセスに使用される場合、C:\Users
に変換されます。
相対パスの例:
QDir("images/landscape.png")
isRelative() またはisAbsolute() 関数を使用すると、QDir で使用されているファイル・パスが相対パスか絶対パスかを確認できます。相対 QDir を絶対 QDir に変換するには、makeAbsolute() を呼び出します。
注意: コロン (:) で始まるパスは、QResource を示すため、常に絶対パスと見なされます。
ナビゲーションとディレクトリ操作
ディレクトリのパスはpath() 関数で取得でき、新しいパスはsetPath() 関数で設定できる。ディレクトリの絶対パスは、absolutePath() を呼び出すことで求められる。
ディレクトリ名は、dirName ()関数を使用して求める。この関数は通常、ディレクトリの場所を指定する絶対パスの最後の要素を返します。ただし、QDir が現在のディレクトリを表している場合は、"." を返すこともあります。
ディレクトリのパスは、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オブジェクトを返すいくつかの静的関数で提供されています。また、これらに対応する文字列を返す関数もあります:
QDir | QString | 戻り値 |
---|---|---|
current() | currentPath() | アプリケーションの作業ディレクトリ |
home() | homePath() | ユーザーのホームディレクトリ |
root() | rootPath() | ルートディレクトリ |
temp() | tempPath() | システムの一時ディレクトリ |
setCurrent() 静的関数を使用して、アプリケーションの作業ディレクトリを設定することもできる。
アプリケーションの実行可能ファイルを含むディレクトリを見つけたい場合は、QCoreApplication::applicationDirPath() を参照してください。
drives() 静的関数は、ファイリング・システムを含む各デバイスのルート・ディレクトリの リストを提供する。Unix システムの場合、この関数は単一のルート・ディレクトリ "/" を含むリストを返します。Windows の場合、リストには通常C:/
が含まれ、ユーザ・システムの構成によってはD:/
などの他のドライブ文字が含まれることもあります。
パスの操作と文字列
パスのその時点でのカレントディレクトリを参照する". "要素、親ディレクトリを参照する". "要素、シンボリックリンクを含むパスは、canonicalPath ()関数を使用して、正規形に縮小することができます。
また、cleanPath() を使って冗長な "/" や "..." 要素を削除することで、パスを簡略化することもできる。
ユーザーのプラットフォームに合わせたネイティブな表現でパスを表示できるようにする必要がある場合もあります。静的なtoNativeSeparators() 関数は、指定されたパスのコピーを返し、その中の各ディレクトリのセパレータは、基礎となるオペレーティング・システムの適切なセパレータに置き換えられる。
例
ディレクトリが存在するかどうかを調べます:
(静的便利関数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を扱う際にいくつかの制限が適用されます:
- アクセス許可は、Androidのネイティブファイルピッカーを実装したQFileDialog 。
- 他の公開外部ディレクトリの代わりにアプリ固有のディレクトリを使用するなど、Scopedストレージのガイドラインに従うことを目指してください。詳しくは、ストレージのベストプラクティスを参照してください。
- Qt API(QFile など)の設計上、後者の API を Android のMediaStoreAPI と完全に統合することはできません。
QFileInfo,QFile,QFileDialog,QCoreApplication::applicationDirPath(),Fetch More Exampleも参照してください 。
メンバ型ドキュメント
enum QDir::Filter
flags QDir::Filters
この enum は、QDir で利用可能なフィルタリングオプションを記述します ; 例えば、entryList() やentryInfoList() の場合です。フィルタ値は、ビット OR 演算子を使用して、以下のリストの値を組み合わせることで指定します:
定数 | 値 | 説明 |
---|---|---|
QDir::Dirs | 0x001 | フィルタにマッチするディレクトリをリストする。 |
QDir::AllDirs | 0x400 | つまり、ディレクトリ名にフィルタを適用しません。 |
QDir::Files | 0x002 | ファイルをリストする。 |
QDir::Drives | 0x004 | ディスクドライブをリストする(Unixでは無視される)。 |
QDir::NoSymLinks | 0x008 | シンボリックリンクをリストしない(シンボリックリンクをサポートしていないオペレーティング・システムでは無視される)。 |
QDir::NoDotAndDotDot | NoDot | NoDotDot | 特別な項目 "." と "..." をリストしない。 |
QDir::NoDot | 0x2000 | 特殊エントリ". "を列挙しない。 |
QDir::NoDotDot | 0x4000 | 特殊エントリ「...」を列挙しない。 |
QDir::AllEntries | Dirs | Files | Drives | ディレクトリ、ファイル、ドライブ、およびシンボリックリンクを一覧表示します(Systemを指定しない限り、リンク切れのシンボリックリンクは一覧表示されません)。 |
QDir::Readable | 0x010 | アプリケーションが読み取り可能なファイルをリストします。Readable "値は、"Dirs "または "Files "と組み合わせる必要があります。 |
QDir::Writable | 0x020 | アプリケーションが書き込み可能なファイルをリストします。Writable 値は、Dirs または Files と組み合わせる必要があります。 |
QDir::Executable | 0x040 | アプリケーションが実行アクセス権を持っているファイルをリストします。Executable 値を Dirs または Files と組み合わせる必要があります。 |
QDir::Modified | 0x080 | 変更されたファイルのみをリストする(Unixでは無視される)。 |
QDir::Hidden | 0x100 | 隠しファイルをリストする(Unixでは". "で始まるファイル)。 |
QDir::System | 0x200 | システム・ファイルをリストする(Unixでは、FIFO、ソケット、デバイス・ファイルが含まれる。Windowsでは、.lnk ファイルが含まれる)。 |
QDir::CaseSensitive | 0x800 | フィルターは大文字と小文字を区別する。 |
ファイルやディレクトリのリストをフィルタリングするためにFilter列挙値を使用する関数は、NoSymLinks値を設定しない限り、ファイルやディレクトリへのシンボリックリンクを含んでしまいます。
デフォルトで構築されたQDir は、パーミッションに基づいてファイルをフィルタリングしないため、entryList() とentryInfoList() は、読み取り可能、書き込み可能、実行可能、またはその3つの組み合わせであるすべてのファイルを返します。このため、デフォルトは書きやすく、同時に便利である。
例えば、Readable
、Writable
、Files
フラグを設定すると、アプリケーションが読み取りアクセス、書き込みアクセス、またはその両方を持つすべてのファイルをリストすることができる。この組み合わせにDirs
とDrives
フラグも含めると、すべてのドライブ、 ディレクトリ、アプリケーションが読み取り、書き込み、または実行できる すべてのファイル、およびそのようなファイル/ディレクトリへのシンボリックリンク を一覧表示できる。
ディレクトリのパーミッションを取得するには、entryInfoList ()関数を使用して関連するQFileInfo オブジェクトを取得し、QFileInfo::permissions ()関数を使用して各ファイルのパーミッションと所有者を取得します。
Filters型はQFlags<Filter>のtypedefである。これは、Filter値のORの組み合わせを格納します。
enum QDir::SortFlag
flags QDir::SortFlags
この列挙型は、QDir 、例えばentryList() やentryInfoList() で利用可能なソートオプションを記述します。ソート値は、以下のリストの値を OR することで指定します:
定数 | 値 | 説明 |
---|---|---|
QDir::Name | 0x00 | 名前で並べ替え。 |
QDir::Time | 0x01 | 時間(修正時間)でソートする。 |
QDir::Size | 0x02 | ファイルサイズ順 |
QDir::Type | 0x80 | ファイルタイプ(拡張子)でソートする。 |
QDir::Unsorted | 0x03 | ソートしない |
QDir::NoSort | -1 | デフォルトではソートされません。 |
QDir::DirsFirst | 0x04 | ディレクトリを先に並べ、次にファイルを並べる。 |
QDir::DirsLast | 0x20 | ファイルを最初に並べ、次にディレクトリを並べる。 |
QDir::Reversed | 0x08 | ソート順を逆にする。 |
QDir::IgnoreCase | 0x10 | 大文字小文字を区別せずにソートする。 |
QDir::LocaleAware | 0x40 | 現在のロケール設定を使って適切にソートする。 |
最初の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 は空文字列で、 何も除外 し ません。 デフ ォル トfilters はAllEntries で、 こ れ も 何も除外 し ません。デフォルトの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 は空文字列で、 何も除外 し ません。 デフ ォル トfilters はAllEntries で、 こ れ も 何も除外 し ません。デフォルトのsort はName |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つのルート・ディレクトリ(すなわち "/")だけを含むリストを返す。
QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
事前にsetNameFilters() とsetFilter() で設定した名前フィルタと属性フィルタに従って並べ替え、setSorting() で設定したフラグに従ってソートした、 ディレクトリ内のすべてのファイルとディレクトリのQFileInfo オブジェクトのリストを返す。
名前フィルタ、ファイル属性フィルタ、およびソート指定は、nameFilters 、filters 、およびsort 引数を使用して上書きすることができる。
ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない場合は、空のリストを返します。
entryList()、setNameFilters()、setSorting()、setFilter()、isReadable()、exists()も参照のこと 。
QFileInfoList QDir::entryInfoList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
これはオーバーロードされた関数である。
事前にsetNameFilters() とsetFilter() で設定された名前と属性のフィルタに従って並び替えられ、setSorting() で設定されたフラグに従ってソートされた、 ディレクトリ内のすべてのファイルとディレクトリのQFileInfo オブジェクトのリストを返す。
属性フィルタと並べ替えの指定は、filters とsort 引数を使用して上書きすることができる。
ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない 場合は、空のリストを返します。
entryList()、setNameFilters()、setSorting()、setFilter()、isReadable()、exists()も参照 。
QStringList QDir::entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
事前にsetNameFilters() とsetFilter() で設定された名前フィルタと属性フィルタに従って並べ替えられ、setSorting() で設定されたフラグに従ってソートされた、 ディレクトリ内のすべてのファイルとディレクトリの名前のリストを返す。
名前フィルタ、ファイル属性フィルタ、およびソート指定は、nameFilters 、filters 、およびsort 引数を使用して上書きすることができる。
ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない場合は、空のリストを返します。
entryInfoList()、setNameFilters()、setSorting()、setFilter()も参照のこと 。
QStringList QDir::entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const
これはオーバーロードされた関数である。
事前にsetNameFilters() とsetFilter() で設定された名前と属性のフィルタに従って並び替えられ、setSorting() で設定されたフラグに従ってソートされた、 ディレクトリ内のすべてのファイルとディレクトリの名前のリストを返す。
属性フィルタと並べ替えの指定は、filters とsort 引数を使用して上書きすることができる。
ディレクトリが読めない場合、存在しない場合、または指定に一致するものがない場合は、空のリストを返します。
注意: 存在しないファイルを指すシンボリックリンクをリストするには、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() 関数を使用して、セパレータをオペレーティング・システムに適したものに変換します。
現在のユーザ・プロファイルのディレクトリが存在しないか、または取得できない場合は、 存在して利用可能なパスが見つかるまで、以下の選択肢が(指定された順序で)チェックされます:
- 環境変数
USERPROFILE
で指定されたパス。 HOMEDRIVE
とHOMEPATH
環境変数を連結したパス。- 環境変数
HOME
で指定されたパス。 SystemDrive
環境変数を使用する)rootPath() 関数によって返されるパス。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() を使用してください。
[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)
これはオーバーロードされた関数である。
fileName がfilters のリスト中のワイルドカード(グロブ)パターンのいずれかにマッチする場合は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 はoldName をnewName にコピーし、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 することで指定される。
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より前のバージョンでは、pos はqsizetype
ではなくint
でした。
関連する非会員
[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
を返す。
例
© 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.