QDir Class
QDir クラスは、ディレクトリ構造とその内容へのアクセスを提供します。詳細...
Header: | #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 では、オプションでドライブ指定が前に付きます)。相対ファイル名は、ディレクトリ名またはファイル名で始まり、カレントディレクトリからの相対パスを指定します。
絶対パスの例:
絶対パスの例: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システムでは、ルート・ディレクトリ"/"が1つ含まれるリストが返されます。Windowsでは通常、C:/
が含まれ、ユーザーのシステム構成によっては、D:/
のような他のドライブ文字が含まれることもあります。
パスの操作と文字列
パスのその時点でのカレントディレクトリを参照する "." 要素、親ディレクトリを参照する ".." 要素、シンボリックリンクを含むパスは、canonicalPath() 関数を使って正規形にすることができます。
また、冗長な"/"や"... "要素を削除するためにcleanPath ()を使用することによって、パスを簡素化することができます。
ユーザーのプラットフォームに合わせたネイティブな表現でパスを表示できるようにする必要がある場合もあります。静的なtoNativeSeparators() 関数は、指定されたパスのコピーを返し、その中の各ディレクトリのセパレータは、基礎となるオペレーティング・システムの適切なセパレータに置き換えられる。
例
ディレクトリが存在するかどうかを調べます:
(静的コンビニエンス関数QFileInfo::exists() またはQFile::exists() を使用することもできます)。
ディレクトリの走査とファイルの読み込み:
QDir dir = QDir::root(); // "/" if (!dir.cd("tmp")) { // "/tmp" qWarning("Cannot find the \"/tmp\" directory"); } else { QFile file(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 enum値を使用する関数は、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
を返す。
警告: この関数の偽の値は、ディレクトリ内のファイルにアクセスできないことを保証するものではありません。
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() を使用します。
QDir dir("/tmp/root_link"); dir = dir.canonicalPath(); if (dir.isRoot()) qWarning("It is a root link");
[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 はint
であり、qsizetype
ではありませんでした。
関連する非メンバー
[noexcept]
bool operator!=(const QDir &lhs, const QDir &rhs)
ディレクトリlhs とディレクトリrhs のパスが異なるか、ソートまたはフィルタ設定が異なる場合はtrue
を返し、そうでない場合はfalse
を返します。
それ以外の場合は を返す:
// The current directory is "/usr/local" QDir d1("/usr/local/bin"); d1.setFilter(QDir::Executable); QDir d2("bin"); if (d1 != d2) qDebug("They differ");
[noexcept]
bool operator==(const QDir &lhs, const QDir &rhs)
ディレクトリlhs とディレクトリrhs のパスが同じで、ソートとフィルタ設定が同じであればtrue
を返し、そうでなければfalse
を返す。
それ以外の場合は を返します:
例:©2024 The Qt Company Ltd. 本文書に含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。