QFileInfo Class

QFileInfo クラスは、ファイル・システム・エントリーの情報を取得するための OS に依存しない API を提供します。詳細...

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

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

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

パブリック関数

QFileInfo()
QFileInfo(const QFileDevice &file)
QFileInfo(const QString &path)
(since 6.0) QFileInfo(const std::filesystem::path &file)
QFileInfo(const QDir &dir, const QString &path)
(since 6.0) QFileInfo(const QDir &dir, const std::filesystem::path &path)
QFileInfo(const QFileInfo &fileinfo)
~QFileInfo()
QDir absoluteDir() const
QString absoluteFilePath() const
QString absolutePath() const
QString baseName() const
QDateTime birthTime() const
(since 6.6) QDateTime birthTime(const QTimeZone &tz) const
QString bundleName() const
bool caching() const
QString canonicalFilePath() const
QString canonicalPath() const
QString completeBaseName() const
QString completeSuffix() const
QDir dir() const
bool exists() const
QString fileName() const
QString filePath() const
QDateTime fileTime(QFileDevice::FileTime time) const
(since 6.6) QDateTime fileTime(QFileDevice::FileTime time, const QTimeZone &tz) const
(since 6.0) std::filesystem::path filesystemAbsoluteFilePath() const
(since 6.0) std::filesystem::path filesystemAbsolutePath() const
(since 6.0) std::filesystem::path filesystemCanonicalFilePath() const
(since 6.0) std::filesystem::path filesystemCanonicalPath() const
(since 6.0) std::filesystem::path filesystemFilePath() const
(since 6.2) std::filesystem::path filesystemJunctionTarget() const
(since 6.0) std::filesystem::path filesystemPath() const
(since 6.6) std::filesystem::path filesystemReadSymLink() const
(since 6.0) std::filesystem::path filesystemSymLinkTarget() const
QString group() const
uint groupId() const
bool isAbsolute() const
(since 6.4) bool isAlias() const
bool isBundle() const
bool isDir() const
bool isExecutable() const
bool isFile() const
bool isHidden() const
bool isJunction() const
bool isNativePath() const
bool isReadable() const
bool isRelative() const
bool isRoot() const
bool isShortcut() const
bool isSymLink() const
bool isSymbolicLink() const
bool isWritable() const
(since 6.2) QString junctionTarget() const
QDateTime lastModified() const
(since 6.6) QDateTime lastModified(const QTimeZone &tz) const
QDateTime lastRead() const
(since 6.6) QDateTime lastRead(const QTimeZone &tz) const
bool makeAbsolute()
QDateTime metadataChangeTime() const
(since 6.6) QDateTime metadataChangeTime(const QTimeZone &tz) const
QString owner() const
uint ownerId() const
QString path() const
bool permission(QFileDevice::Permissions permissions) const
QFileDevice::Permissions permissions() const
(since 6.6) QString readSymLink() const
void refresh()
void setCaching(bool enable)
void setFile(const QString &path)
(since 6.0) void setFile(const std::filesystem::path &path)
void setFile(const QFileDevice &file)
void setFile(const QDir &dir, const QString &path)
qint64 size() const
(since 6.0) void stat()
QString suffix() const
void swap(QFileInfo &other)
QString symLinkTarget() const
QFileInfo &operator=(QFileInfo &&other)
QFileInfo &operator=(const QFileInfo &fileinfo)

静的パブリック・メンバ

bool exists(const QString &path)
QFileInfoList
bool operator!=(const QFileInfo &lhs, const QFileInfo &rhs)
bool operator==(const QFileInfo &lhs, const QFileInfo &rhs)

マクロ

詳細説明

QFileInfo は、ファイルシステムエントリの名前、パス、アクセス権、通常のファイルかディレクトリかシンボリックリンクかなどの情報を提供します。エントリのサイズや最終更新/読み取り時間も確認できます。QFileInfo は、Qtリソースに関する情報を取得するためにも使用できます。

QFileInfo は、絶対パスまたは相対パスでファイルシステムのエントリを指すことができます:

  • Unix では、絶対パスはディレクトリ区切り文字'/' で始まります。Windows では、絶対パスはドライブ指定(例えば、D:/ )で始まります。
  • 相対パスは、ディレクトリ名または通常のファイル名で始まり、現在の作業ディレクトリからの相対的なファイル・システム・エントリのパスを指定します。

絶対パスの例は、文字列"/tmp/quartz" です。相対パスは"src/fatlib" のようになります。関数isRelative() を使用して、QFileInfo が相対パスと絶対パスのどちらを使用しているかを確認できます。関数makeAbsolute() を呼び出すと、相対 QFileInfo のパスを絶対パスに変換できます。

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

QFileInfo が動作するファイル・システム・エントリ・パスは、コンストラクタで設定するか、または後でsetFile() を使用して設定します。エントリが実際に存在するかどうかを調べるにはexists() を、サイズを調べるにはsize() を使用する。

ファイル・システム・エントリの型は、isFile()、isDir()、isSymLink() で取得する。symLinkTarget() 関数は、シンボリックリンクが指す対象の絶対パスを提供する。

ファイル・システム・エントリのパス要素は、path() およびfileName() で抽出できる。fileName() の部分は、baseName()、suffix()、またはcompleteSuffix() で抽出できます。Qt クラスによって作成されたディレクトリを参照する QFileInfo オブジェクトは、末尾のディレクトリ区切り文字'/' を持ちません。独自のファイル情報オブジェクトで末尾のセパレータを使用したい場合は、コンストラクタまたはsetFile() で指定したエントリのパスにセパレータを追加してください。

日付と時刻に関連する情報は、birthTime(),fileTime(),lastModified(),lastRead(),metadataChangeTime() で返される。アクセス権限に関する情報は、isReadable()、isWritable()、isExecutable() で取得できる。所有権情報は、owner ()、ownerId ()、group ()、groupId ()で取得できる。また、permission() 関数を使用すると、1 つのステートメントで権限と所有権を調べることもできます。

Unix(macOSとiOSを含む)では、このクラスのプロパティ・ゲッター関数は、シンボリックリンクではなく、ターゲットの時間やサイズなどのプロパティを返します。QFile を使用してシンボリックリンクを開くと、リンクのターゲットが効果的に開きます。例えば

#ifdef Q_OS_UNIX

QFileInfo info1("/home/bob/bin/untabify");
info1.isSymLink();          // returns true
info1.absoluteFilePath();   // returns "/home/bob/bin/untabify"
info1.size();               // returns 56201
info1.symLinkTarget();      // returns "/opt/pretty++/bin/untabify"

QFileInfo info2(info1.symLinkTarget());
info2.isSymLink();          // returns false
info2.absoluteFilePath();   // returns "/opt/pretty++/bin/untabify"
info2.size();               // returns 56201

#endif

Windowsでは現在、ショートカット(.lnk ファイル)はシンボリックリンクとして扱われます。Unixシステムと同様に、プロパティ・ゲッターは.lnk ファイルそのものではなく、ターゲットのサイズを返します。この動作は非推奨であり、Qt の将来のバージョンで削除される可能性があります。その後、.lnk ファイルは通常のファイルとして扱われます。

#ifdef Q_OS_WIN

QFileInfo info1("C:\\Users\\Bob\\untabify.lnk");
info1.isSymLink();          // returns true
info1.absoluteFilePath();   // returns "C:/Users/Bob/untabify.lnk"
info1.size();               // returns 63942
info1.symLinkTarget();      // returns "C:/Pretty++/untabify"

QFileInfo info2(info1.symLinkTarget());
info2.isSymLink();          // returns false
info2.absoluteFilePath();   // returns "C:/Pretty++/untabify"
info2.size();               // returns 63942

#endif

NTFSパーミッション

NTFS ファイルシステムでは、パフォーマンス上の理由から、所有権とパーミッションのチェックはデフォルトでは無効になっています。これを有効にするには、次の行を含めます:

extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;

パーミッションのチェックは、qt_ntfs_permission_lookup を 1 ずつインクリメント/デクリメントすることで、オン/オフを切り替える。

qt_ntfs_permission_lookup++; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again

注意: これは非アトミックなグローバル変数なので、qt_ntfs_permission_lookup をインクリメントまたはデクリメントするのは、メインスレッド以外のスレッドが開始する前か、メインスレッド以外のすべてのスレッドが終了した後にするのが安全です。

注意: Qt 6.6 以降、変数qt_ntfs_permission_lookup は非推奨です。以下の代替を使用してください。

権限チェックを安全かつ簡単に管理する方法は、RAII クラスQNtfsPermissionCheckGuard を使用することです。

void complexFunction()
{
    QNtfsPermissionCheckGuard permissionGuard;  // check is enabled

    // do complex things here that need permission check enabled

}   // as the guard goes out of scope the check is disabled

よりきめ細かい制御が必要な場合は、代わりに以下の関数でパーミッションを管理することができます:

qAreNtfsPermissionChecksEnabled();   // check status
qEnableNtfsPermissionChecks();       // turn checking on
qDisableNtfsPermissionChecks();      // turn it off again

パフォーマンスに関する考慮事項

QFileInfoの関数の中には、ファイル・システムに問い合わせなければならないものもありますが、パフォーマンス上の理由から、パス文字列のみを操作する関数もあります。例えば相対エントリのパスの絶対パスを返すために、absolutePath() はファイル・システムに問い合わせる必要があります。しかし、path() 関数はファイル名を直接操作できるため、より高速です。

QFileInfo は、参照先のファイル・システム・エントリに関する情報もキャッシュします。ファイル・システムは、他のユーザやプログラム、あるいは同じプログラムの他の部分によって変更される可能性があるため、QFileInfoに格納されている情報を更新する関数、すなわちrefresh ()が用意されています。QFileInfoのキャッシュをオフにする(つまり、QFileInfoに情報を要求するたびに、その下にあるファイル・システムに問い合わせるようにする)には、setCaching (false)を呼び出します。

ファイル・システムからの情報の取得は通常、(おそらく)高価なシステム関数を呼び出すことによって行われるため、QFileInfoは(実装によっては)構築時にファイル・システムからすべての情報を取得しない場合があります。すべての情報がファイル・システムから直ちに読み込まれるようにするには、stat() メンバ関数を使用します。

birthTime(),fileTime(),lastModified(),lastRead(),metadataChangeTime() は、デフォルトで現地時間の時刻を返す。ネイティブ・ファイル・システムAPIは通常UTCを使用しているため、変換が必要になります。ローカル時間を実際に必要としない場合は、QTimeZone::UTC で時間を直接要求することで、これを避けることができます。

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

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

QDir およびQFileも参照して ください。

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

QFileInfo::QFileInfo()

ファイルシステムのエントリーを参照しない空のQFileInfoオブジェクトを構築します。

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

[explicit] QFileInfo::QFileInfo(const QFileDevice &file)

ファイルfile に関する情報を提供する新しい QFileInfo を構築します。

file が相対パスを持つ場合、QFileInfo も相対パスを持つことになります。

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

[explicit] QFileInfo::QFileInfo(const QString &path)

path にあるファイル・システム・エントリに関する情報を提供する QFileInfo を構築します。 は、絶対パスまたは相対パスで指定できます。

path が相対パスの場合、QFileInfo も相対パスになります。

setFile()、isRelative()、QDir::setCurrent()、QDir::isRelativePath()も参照してください

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

与えられたfile に関する情報を提供する新しい QFileInfo を構築します。

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

setFile()、isRelative()、QDir::setCurrent()、QDir::isRelativePath()も参照してください

[explicit] QFileInfo::QFileInfo(const QDir &dir, const QString &path)

指定されたファイル・システム・エントリpath に関する情報を提供する新しい QFileInfo を構築します。dir ディレクトリからの相対パスです。

dir が相対パスの場合、QFileInfo も相対パスになります。

path が絶対パスの場合、dir で指定されたディレクトリは無視されます。

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

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

新しい QFileInfo を構築します。この QFileInfo は、ディレクトリdir からの相対パスであるpath のファイル・システム・エントリに関する情報を提供します。

dir が相対パスの場合、QFileInfo も相対パスになります。

path が絶対パスの場合、dir で指定されたディレクトリは無視されます。

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

QFileInfo::QFileInfo(const QFileInfo &fileinfo)

与えられたfileinfo のコピーである新しい QFileInfo を構築します。

[noexcept] QFileInfo::~QFileInfo()

QFileInfo を破棄し、そのリソースを解放します。

QDir QFileInfo::absoluteDir() const

このQFileInfo が参照するファイルシステムエントリの親ディレクトリの絶対パスを表すQDir オブジェクトを返します。

// Given a current working directory of "/home/user/Documents/memos/"
QFileInfo info1(u"relativeFile"_s);
qDebug() << info1.absolutePath(); // "/home/user/Documents/memos/"
qDebug() << info1.baseName(); // "relativeFile"
qDebug() << info1.absoluteDir(); // QDir(u"/home/user/Documents/memos"_s)
qDebug() << info1.absoluteDir().path(); // "/home/user/Documents/memos"

// A QFileInfo on a dir
QFileInfo info2(u"/home/user/Documents/memos"_s);
qDebug() << info2.absolutePath(); // "/home/user/Documents"
qDebug() << info2.baseName(); // "memos"
qDebug() << info2.absoluteDir(); // QDir(u"/home/user/Documents"_s)
qDebug() << info2.absoluteDir().path(); // "/home/user/Documents"

dir()、filePath()、fileName() およびisRelative()も参照

QString QFileInfo::absoluteFilePath() const

このQFileInfo が参照しているファイルシステム・エントリの絶対フルパス(エントリ名も含む)を返します。

Unixでは、絶対パスはディレクトリ区切り文字'/' で始まる。Windows では、絶対パスはドライブ指定で始まります (たとえばD:/)。

Windowsでは、ドライブ文字にマップされていないネットワーク共有のパスは//sharename/ で始まります。

QFileInfo はドライブ文字を大文字にします。ただし、 ではこのようなことは行われません。以下のコード・スニペットはこれを示している。QDir

    QFileInfo fi("c:/temp/foo");
    qDebug() << fi.absoluteFilePath(); // "C:/temp/foo"

この関数は、isRelative() が真でない限り、filePath() と同じものを返す。canonicalFilePath() とは対照的に、シンボリックリンクや冗長な "." や ".." 要素は必ずしも削除されない。

警告: filePath() が空の場合、この関数の動作は未定義である。

filePath()、canonicalFilePath()、isRelative()も参照

QString QFileInfo::absolutePath() const

このQFileInfo が参照するファイル・システム・エントリの絶対パスを、エントリ名を除いて返します。

Unix では、絶対パスはディレクトリ区切り文字'/' で始まる。Windowsでは、絶対パスはドライブ指定(例えば、D:/ )で始まる。

Windows では、ドライブ文字にマップされていないネットワーク共有のパスは//sharename/ で始まる。

canonicalPath() とは対照的に、シンボリック・リンクや冗長な "." や ".." 要素は必ずしも削除されません。

警告: filePath() が空の場合、この関数の動作は未定義である。

absoluteFilePath()、path()、canonicalPath()、fileName()、isRelative()も参照

QString QFileInfo::baseName() const

パスのないファイルのベース名を返します。

ベース名は、ファイルの最初の'.' 文字までのすべての文字で構成されます。

QFileInfo fi("/tmp/archive.tar.gz");
QString base = fi.baseName();  // base = "archive"

例: ファイルのベース名は、ファイルの命名規則とは無関係に、すべてのプラットフォームで等しく計算されます (たとえば、Unix の ".bashrc" はベース名が空で、サフィックスは "bashrc" です)。

fileName()、suffix()、completeSuffix()、completeBaseName()も参照

QDateTime QFileInfo::birthTime() const

ファイルが作成された(誕生した)日時を、ローカル時間で返します。

ファイルの誕生時刻が利用できない場合、この関数は無効なQDateTime を返します。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

この関数は、QFileInfo::birthTime(constQTimeZone &tz)をオーバーロードし、birthTime(QTimeZone::LocalTime) と同じものを返します。

lastModified(),lastRead(),metadataChangeTime(),fileTime()も参照してください

[since 6.6] QDateTime QFileInfo::birthTime(const QTimeZone &tz) const

ファイルが作成された(生まれた)日時を返します。

返される時刻は、tz で指定されたタイムゾーンになります。たとえば、QTimeZone::LocalTime またはQTimeZone::UTC を使用すると、それぞれローカル・タイム・ゾーンまたは UTC での時刻を取得できます。ネイティブ・ファイル・システムAPIは通常UTCを使用するので、QTimeZone::UTC を使用すると、変換が不要なため、多くの場合より速くなります。

ファイルの誕生時刻が利用できない場合、この関数は無効なQDateTime を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

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

lastModified(const QTimeZone &),lastRead(const QTimeZone &),metadataChangeTime(const QTimeZone &),fileTime(QFileDevice::FileTime, const QTimeZone &)も参照してください

QString QFileInfo::bundleName() const

バンドルの名前を返します。

macOS と iOS では、パスがisBundle() の場合、バンドルの適切なローカライズ名を返します。その他のプラットフォームでは、空のQString が返されます。

QFileInfo fi("/Applications/Safari.app");
QString bundle = fi.bundleName();                // name = "Safari"

isBundle(),filePath(),baseName(),suffix()も参照してください

bool QFileInfo::caching() const

キャッシュが有効な場合はtrue を返し、そうでない場合はfalse を返す。

setCaching() およびrefresh() も参照

QString QFileInfo::canonicalFilePath() const

ファイルシステムのエントリの正規パス (エントリの名前を含む)、 つまりシンボリックリンクや冗長な'.''..' 要素を含まない絶対パスを返します。

エントリが存在しない場合は、 canonicalFilePath() は空の文字列を返します。

filePath()、absoluteFilePath()、dir()も参照

QString QFileInfo::canonicalPath() const

ファイルシステムエントリの正規パス (エントリ名を除く)、 つまりシンボリックリンクや冗長な "." や "..." 要素を含まない絶対パスを返します。

エントリが存在しない場合は、このメソッドは空の文字列を返します。

path() およびabsolutePath()も参照

QString QFileInfo::completeBaseName() const

パスを除いたファイルの完全なベース名を返します。

完全なベース名は、ファイル内の最後の'.' 文字までのすべての文字で構成されます。

例:

QFileInfo fi("/tmp/archive.tar.gz");
QString base = fi.completeBaseName();  // base = "archive.tar"

fileName()、suffix()、completeSuffix()、baseName()も参照

QString QFileInfo::completeSuffix() const

ファイルの完全なサフィックス(拡張子)を返します。

完全なサフィックスは、ファイル内の最初の '.' 以降のすべての文字で構成されます。

QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.completeSuffix();  // ext = "tar.gz"

fileName()、suffix()、baseName()、completeBaseName()も参照

QDir QFileInfo::dir() const

QFileInfo が参照するファイル・システム・エントリの親ディレクトリのパスを表すQDir オブジェクトを返します。

注意: QFileInfo がディレクトリを表す場合でも、返されるQDir は常にオブジェクトの親ディレクトリに対応する。

以下のそれぞれについて、dir() はQDir "~/examples/191697" を返す。

    QFileInfo fileInfo1("~/examples/191697/.");
    QFileInfo fileInfo2("~/examples/191697/..");
    QFileInfo fileInfo3("~/examples/191697/main.cpp");

以下のそれぞれについて、dir() はQDir "." を返す。

    QFileInfo fileInfo4(".");
    QFileInfo fileInfo5("..");
    QFileInfo fileInfo6("main.cpp");

absolutePath()、filePath()、fileName()、isRelative()、absoluteDir()も参照のこと

bool QFileInfo::exists() const

このQFileInfo が参照するファイル・システム・エントリが存在する場合はtrue を返し、存在しない場合はfalse を返す。

注意: エントリが存在しないターゲットを指すシンボリックリンクの場合、このメソッドはfalse を返します。

[static] bool QFileInfo::exists(const QString &path)

ファイル・システム・エントリpath が存在する場合はtrue を返し、そうでない場合はfalse を返す。

注意: path が存在しないターゲットを指すシンボリックリンクの場合、このメソッドはfalse を返す。

注意 :この関数を使用すると、ファイル・システム・アクセスにQFileInfo(path).exists() を使用するよりも高速になる。

QString QFileInfo::fileName() const

このQFileInfo が参照するファイル・システム・エントリの名前を、パスを除いて返します。

QFileInfo fi("/tmp/archive.tar.gz");
QString name = fi.fileName();                // name = "archive.tar.gz"

注意 : このQFileInfo にディレクトリ区切り文字'/' で終わるパスが指定された場合、エントリの名前部分は空であるとみなされる。

isRelative()、filePath()、baseName()、suffix()も参照

QString QFileInfo::filePath() const

このQFileInfo が参照するファイルシステムエントリのパスを返します。パスは、絶対パスでも相対パスでもかまいません。

absoluteFilePath()、canonicalFilePath()、isRelative()も参照

QDateTime QFileInfo::fileTime(QFileDevice::FileTime time) const

time で指定されたファイル時刻を返す。

時刻を特定できない場合は、無効な日付時刻が返されます。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

この関数は、QFileInfo::fileTime(QFileDevice::FileTime, const QTimeZone &) をオーバーロードし、fileTime(time, QTimeZone::LocalTime) と同じものを返します。

birthTime(),lastModified(),lastRead(),metadataChangeTime()も参照してください

[since 6.6] QDateTime QFileInfo::fileTime(QFileDevice::FileTime time, const QTimeZone &tz) const

time で指定されたファイル時刻を返す。

返される時刻は、tz で指定されたタイムゾーンの時刻である。たとえば、QTimeZone::LocalTime またはQTimeZone::UTC を使用すると、それぞれローカルタイムゾーンまたは UTC の時刻を取得できます。ネイティブ・ファイル・システムAPIは通常UTCを使用するため、QTimeZone::UTC を使用すると、変換が不要なため、より高速になることが多い。

時刻を決定できない場合、無効な日付時刻が返される。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

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

birthTime(const QTimeZone &),lastModified(const QTimeZone &),lastRead(const QTimeZone &),metadataChangeTime(const QTimeZone &),QDateTime::isValid()も参照してください

[since 6.0] std::filesystem::path QFileInfo::filesystemAbsoluteFilePath() const

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

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

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

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

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

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

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

[since 6.0] std::filesystem::path QFileInfo::filesystemCanonicalFilePath() const

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

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

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

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

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

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

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

[since 6.0] std::filesystem::path QFileInfo::filesystemFilePath() const

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

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

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

[since 6.2] std::filesystem::path QFileInfo::filesystemJunctionTarget() const

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

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

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

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

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

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

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

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

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

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

[since 6.0] std::filesystem::path QFileInfo::filesystemSymLinkTarget() const

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

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

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

QString QFileInfo::group() const

ファイルのグループを返します。Windowsでは、ファイルがグループを持っていないシステム、またはエラーが発生した場合、空の文字列が返されます。

Unixでは、この関数は時間がかかることがある(ミリ秒単位)。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットの情報を返す。

groupId()、owner()、ownerId()も参照のこと

uint QFileInfo::groupId() const

ファイルが属するグループの ID を返します。

Windowsやファイルがグループを持たないシステムでは、この関数は常に(uint) -2を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返す。

group()、owner()、ownerId()も参照のこと

bool QFileInfo::isAbsolute() const

ファイル・システム・エントリのパスが絶対パスである場合はtrue を返し、そうでない場合はfalse を返す(つまり、パスは相対パスである)。

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

isRelative()も参照

[since 6.4] bool QFileInfo::isAlias() const

このオブジェクトがエイリアスを指している場合はtrue を返し、そうでない場合はfalse を返します。

エイリアスはmacOSにのみ存在します。エイリアスは通常のファイルとして扱われるため、エイリアスを開くとそのファイル自体も開きます。エイリアスが参照するファイルやディレクトリを開くには、symLinkTarget ()を使用する。

注意: エイリアスが存在しないファイルを指している場合でも、isAlias()はtrueを返します。

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

isFile(),isDir(),isSymLink(),symLinkTarget()も参照してください

bool QFileInfo::isBundle() const

このオブジェクトがバンドル、または macOS と iOS のバンドルへのシンボリックリンクを指している場合はtrue を返し、そうでない場合はfalse を返します。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

isDir()、isSymLink()、isFile()も参照

bool QFileInfo::isDir() const

このオブジェクトがディレクトリまたはディレクトリへのシンボリックリンクを指している場合は、true を返します。このオブジェクトがディレクトリではないもの(ファイルなど)を指しているか、 存在しない場合はfalse を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットの情報を返す。

isFile()、isSymLink()、isBundle()も参照

bool QFileInfo::isExecutable() const

この関数QFileInfo が参照するファイル・システム・エントリが実行可能な場合はtrue を返し、そうでない場合はfalse を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなく、ターゲットに関する情報を返します。

isReadable()、isWritable()、permission()も参照

bool QFileInfo::isFile() const

このオブジェクトがファイルまたはファイルへのシンボリックリンクを指している場合は、true を返す。オブジェクトがファイルでないもの(ディレクトリなど)を指しているか、存在しない場合はfalse を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットの情報を返します。

isDir()、isSymLink()、isBundle()も参照

bool QFileInfo::isHidden() const

この関数QFileInfo が参照するファイルシステムのエントリが `hidden' の場合はtrue を返し、そうでない場合はfalse を返す。

注意:この関数は、QDir::entryList が "." と ".." を表示するように扱っているにもかかわらず、Unix上の特別なエントリに対してはtrue を返す。また、この関数はファイル名を検査するので、Unix上では、このファイルがシンボリックリンクの場合、ターゲットの名前ではなく、シンボリックリンクの名前を検査することに注意。

Windowsでは、ターゲット・ファイルが(シンボリックリンクではなく)非表示の場合、この関数はtrue を返します。

bool QFileInfo::isJunction() const

オブジェクトがジャンクションを指している場合はtrue を返し、そうでない場合はfalse を返します。

ジャンクションはWindowsのNTFSファイルシステム上にのみ存在し、通常mklink コマンドによって作成されます。これはディレクトリのシンボリックリンクと考えることができ、ローカルボリューム上の絶対パスに対してのみ作成することができる。

bool QFileInfo::isNativePath() const

ファイルパスがネイティブAPIで直接使用できる場合は、true を返します。Qt Resource System などの Qt 内部の仮想ファイルシステムでサポートされている場合はfalse を返します。

注意:ネイティブパスは、プラットフォームやネイティブAPIの入力要件によっては、パス区切り文字や文字エンコーディングの変換が必要な場合があります。

QDir::toNativeSeparators(),QFile::encodeName(),filePath(),absoluteFilePath(),canonicalFilePath()も参照してください

bool QFileInfo::isReadable() const

ユーザがこのQFileInfo が参照するファイル・システム・エントリを読み込める場合はtrue を返し、そうでない場合はfalse を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットの情報を返す。

注意: NTFS permissions 検査が有効になっていない場合、Windows での結果は単にエントリが存在するかどうかを反映したものになる。

isWritable()、isExecutable()、permission()も参照

bool QFileInfo::isRelative() const

ファイルシステム・エントリのパスが相対パスの場合はtrue を返し、そうでない場合はfalse を返す(つまり、パスは絶対パスである)。

Unixでは、絶対パスはディレクトリ区切り文字'/' で始まる。Windows では、絶対パスはドライブ指定(たとえばD:/ )で始まります。

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

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

bool QFileInfo::isRoot() const

このオブジェクトがディレクトリまたはディレクトリへのシンボリックリンクを指しており、そのディレクトリがルートディレクトリである場合はtrue を返し、そうでない場合はfalse を返します。

bool QFileInfo::isShortcut() const

このオブジェクトがショートカットを指している場合はtrue を返し、そうでない場合はfalse を返す。

ショートカットはWindows上にのみ存在し、通常.lnk 。例えば、Windows上のショートカット(*.lnk ファイル)に対してはtrueが返されますが、Unix(macOSやiOSを含む)に対してはfalseが返されます。

ショートカット(.lnk)ファイルは通常のファイルとして扱われます。これらを開くと、.lnk ファイル自体が開きます。ショートカットが参照するファイルを開くには、ショートカット上でsymLinkTarget ()を使用する必要があります。

注意: ショートカット(壊れたショートカット)が存在しないファイルを指していても、isShortcut()はtrueを返します。

isFile()、isDir()、isSymbolicLink()、symLinkTarget()も参照

このオブジェクトがシンボリックリンク、ショートカット、エイリアスを指している場合はtrue を返し、そうでない場合はfalse を返す。

シンボリックリンクはUnix(macOSとiOSを含む)とWindowsに存在し、通常それぞれln -smklink コマンドで作成される。シンボリックリンクを開くと、実質的にlink's target を開くことになる。

また、Windowsではショートカット(*.lnk ファイル)、macOSではエイリアスに対してtrueが返されます。この動作は非推奨であり、Qt の将来のバージョンで変更される可能性があります。ショートカットまたはエイリアスを開くと、.lnk またはエイリアスファイル自体が開きます。

QFileInfo info(fileName);
if (info.isSymLink())
    fileName = info.symLinkTarget();

注: exists() は、シンボリックリンクが既存のターゲットを指している場合はtrue を返し、そうでない場合はfalse を返します。

isFile()、isDir()、symLinkTarget()も参照

このオブジェクトがシンボリックリンクを指している場合はtrue を返し、そうでない場合はfalse を返す。

シンボリックリンクはUnix(macOSとiOSを含む)とWindows(NTFS-symlink)に存在し、それぞれ通常ln -s またはmklink コマンドによって作成される。

Unixはシンボリックリンクを透過的に扱います。シンボリックリンクを開くと、事実上、link's target を開くことになる。

isSymLink() とは対照的に、Windows のショートカット (*.lnk ファイル) や macOS のエイリアスでは false が返されます。代わりにQFileInfo::isShortcut() とQFileInfo::isAlias() を使用してください。

注意: exists() は、シンボリックリンクが既存のターゲットを指している場合はtrue を返し、そうでない場合はfalse を返す。

isFile()、isDir()、isShortcut()、symLinkTarget()も参照のこと

bool QFileInfo::isWritable() const

ユーザがこのQFileInfo が参照するファイル・システム・エントリに書き込み可能な場合はtrue を返し、そうでない場合はfalse を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返す。

注意: NTFS permissions 検査が有効になっていない場合、Windows での結果は、単にエントリが読み取り専用とマークされているかどうかを反映したものになる。

isReadable()、isExecutable()、permission()も参照のこと

[since 6.2] QString QFileInfo::junctionTarget() const

NTFS ジャンクションを、それが参照するパスに解決します。

NTFS ジャンクションが指すディレクトリへの絶対パスを返すか、 オブジェクトが NTFS ジャンクションでない場合は空文字列を返します。

NTFS ジャンクションが指すディレクトリが実際に存在する保証はありません。

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

isJunction(),isFile(),isDir(),isSymLink(),isSymbolicLink(),isShortcut()も参照してください

QDateTime QFileInfo::lastModified() const

ファイルが最後に変更された日時を返します。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

この関数は、QFileInfo::lastModified(const QTimeZone &) をオーバーロードし、lastModified(QTimeZone::LocalTime) と同じものを返します。

birthTime()、lastRead()、metadataChangeTime()、fileTime()も参照

[since 6.6] QDateTime QFileInfo::lastModified(const QTimeZone &tz) const

ファイルが最後に更新された日時を返します。

返される時刻は、tz で指定されたタイムゾーンになります。たとえば、QTimeZone::LocalTime またはQTimeZone::UTC を使用すると、それぞれローカル・タイム・ゾーンまたは UTC での時刻を取得できます。ネイティブ・ファイル・システムAPIは通常UTCを使用するので、QTimeZone::UTC を使用すると、変換が不要なため、高速になることが多い。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

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

birthTime(const QTimeZone &),lastRead(const QTimeZone &),metadataChangeTime(const QTimeZone &),fileTime(QFileDevice::FileTime, const QTimeZone &)も参照してください

QDateTime QFileInfo::lastRead() const

ファイルが最後に読み込まれた(アクセスされた)日時を返します。

この情報が利用できないプラットフォームでは、lastModified() と同じ時刻を返します。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

この関数は、QFileInfo::lastRead(const QTimeZone &) をオーバーロードし、lastRead(QTimeZone::LocalTime) と同じ時刻を返します。

birthTime()、lastModified()、metadataChangeTime()、fileTime()も参照

[since 6.6] QDateTime QFileInfo::lastRead(const QTimeZone &tz) const

ファイルが最後に読み込まれた(アクセスされた)日時を返します。

返される時刻は、tz で指定されたタイムゾーンになります。たとえば、QTimeZone::LocalTime またはQTimeZone::UTC を使用すると、それぞれローカル・タイム・ゾーンまたは UTC での時刻を取得できます。ネイティブ・ファイル・システムAPIは通常UTCを使用するため、QTimeZone::UTC を使用した方が変換が不要なため、高速になることが多い。

この情報が利用できないプラットフォームでは、lastModified() と同じ時刻を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

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

birthTime(const QTimeZone &),lastModified(const QTimeZone &),metadataChangeTime(const QTimeZone &),fileTime(QFileDevice::FileTime, const QTimeZone &)も参照してください

bool QFileInfo::makeAbsolute()

ファイル・システム・エントリのパスが相対パスの場合、このメソッドはそれを絶対パスに変換し、true を返します。パスがすでに絶対パスの場合、このメソッドはfalse を返します。

filePath() およびisRelative()も参照

QDateTime QFileInfo::metadataChangeTime() const

ファイルのメタデータが最後に変更された日時をローカル時間で返します。

メタデータの変更は、ファイルが最初に作成されたときに発生しますが、ユーザが inode 情報を書き込んだり設定したりするときにも発生します (たとえば、ファイルのパーミッションを変更するなど)。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

この関数は、QFileInfo::metadataChangeTime(constQTimeZone &tz)をオーバーロードし、metadataChangeTime(QTimeZone::LocalTime) と同じものを返します。

birthTime(),lastModified(),lastRead(),fileTime()も参照

[since 6.6] QDateTime QFileInfo::metadataChangeTime(const QTimeZone &tz) const

ファイルのメタデータが最後に変更された日時を返す。メタデータの変更は、ファイルが最初に作成されたときに発生しますが、ユーザがinode情報を書き込んだり設定したりするときにも発生します(たとえば、ファイルのパーミッションを変更するなど)。

返される時刻は、tz で指定されたタイムゾーンです。たとえば、QTimeZone::LocalTime またはQTimeZone::UTC を使用すると、それぞれローカルタイムゾーンまたは UTC での時刻を取得できます。ネイティブ・ファイル・システムAPIは通常UTCを使用するので、QTimeZone::UTC を使用すると、変換が不要なため、高速になることが多い。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

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

birthTime(const QTimeZone &),lastModified(const QTimeZone &),lastRead(const QTimeZone &),fileTime(QFileDevice::FileTime time, const QTimeZone &)も参照してください

QString QFileInfo::owner() const

ファイルの所有者を返します。ファイルに所有者がいないシステム、またはエラーが発生した場合は、空の文字列が返されます。

この関数はUnixでは時間がかかります(ミリ秒単位)。Windowsでは、NTFS permissions チェックが有効になっていない限り、空文字列が返される。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットの情報を返す。

ownerId()、group()、groupId()も参照

uint QFileInfo::ownerId() const

ファイルの所有者の ID を返します。

Windowsおよびファイルに所有者がいないシステムでは、この関数は ((uint) -2) を返す。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返す。

owner()、group()、groupId()も参照

QString QFileInfo::path() const

このQFileInfo が参照するファイル・システム・エントリのパスを、エントリ名を除いて返します。

注意: このQFileInfo にディレクトリ区切り文字'/' で終わるパスが指定された場合、エントリ名の部分は空であるとみなされる。この場合、この関数はパス全体を返します。

filePath()、absolutePath()、canonicalPath()、dir()、fileName()、isRelative()も参照

bool QFileInfo::permission(QFileDevice::Permissions permissions) const

ファイルのパーミッションをテストする。permissions 引数には、QFile::Permissions 型の複数のフラグを OR したものを指定し、パーミッションの組み合わせをチェックします。

ファイルにパーミッションがないシステムでは、この関数は常にtrue を返します。

注意: NTFS permissions チェックが有効になっていない場合、Windows では結果が不正確になる可能性があります。

QFileInfo fi("/tmp/archive.tar.gz");
if (fi.permission(QFile::WriteUser | QFile::ReadGroup))
    qWarning("I can change the file; my group can read the file");
if (fi.permission(QFile::WriteGroup | QFile::WriteOther))
    qWarning("The group or others can change the file");

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットの情報を返します。

isReadable()、isWritable()、isExecutable()も参照

QFileDevice::Permissions QFileInfo::permissions() const

ファイルの QFile::Permissions の完全な OR 組合せを返します。

注意: NTFS permissions のチェックが有効になっていない場合、Windows では結果が不正確になる可能性があります。

ファイルがシンボリックリンクの場合、この関数はシンボリックリンクではなくターゲットに関する情報を返します。

シンボリックリンクが参照するパスを読み込みます。

シンボリックリンクを含むディレクトリからの相対パスを解決せずに、 シンボリックリンクが参照している生のパスを返します。返される文字列が絶対パスになるのは、シンボリックリンクが実際にそのパスを参照している場合のみです。オブジェクトがシンボリックリンクでない場合は、空の文字列を返します。

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

symLinkTarget(),exists(),isSymLink(),isDir(),isFile()も参照してください

void QFileInfo::refresh()

このQFileInfo が参照するファイル・システム・エントリに関する情報を更新します。つまり、キャッシュされたプロパティが次にフェッチされるときに、ファイル・システムから情報を読み込みます。

void QFileInfo::setCaching(bool enable)

enable が真の場合、ファイル情報のキャッシュを有効にします。enable が偽の場合、キャッシュは無効になります。

キャッシングが有効な場合、QFileInfo は、ファイル情報が最初に必要になったときにファイル・システムから読み込みますが、通常、それ以降は読み込みません。

キャッシュはデフォルトで有効になっている。

refresh() およびcaching()も参照

void QFileInfo::setFile(const QString &path)

このQFileInfo が情報を提供するファイル・システム・エントリのパスをpath に設定する。絶対パスでも相対パスでもよい。

Unix では、絶対パスはディレクトリ区切り文字'/' で始まります。Windowsでは、絶対パスはドライブ指定(たとえば、D:/ )で始まります。

相対パスは、ディレクトリ名または通常のファイル名で始まり、現在の作業ディレクトリからの相対的なファイル・システム・エントリのパスを指定します。

QFileInfo info("/usr/bin/env");

QString path = info.absolutePath(); // path = /usr/bin
QString base = info.baseName(); // base = env

info.setFile("/etc/hosts");

path = info.absolutePath(); // path = /etc
base = info.baseName(); // base = hosts

isFile()、isRelative()、QDir::setCurrent()、QDir::isRelativePath()も参照

[since 6.0] void QFileInfo::setFile(const std::filesystem::path &path)

このQFileInfo が情報を提供するファイル・システム・エントリのパスをpath に設定します。

path が相対パスの場合、QFileInfo も相対パスになります。

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

void QFileInfo::setFile(const QFileDevice &file)

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

QFileInfo が情報を提供するファイルをfile に設定します。

file に相対パスが含まれている場合、QFileInfo も相対パスになります。

isRelative()も参照

void QFileInfo::setFile(const QDir &dir, const QString &path)

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

このQFileInfo が情報を提供するファイル・システム・エントリのパスを、ディレクトリdir 内のpath に設定します。

dir が相対パスの場合、QFileInfo も相対パスになります。

path が絶対パスの場合、dir で指定されたディレクトリは無視される。

isRelative()も参照

qint64 QFileInfo::size() const

ファイル・サイズをバイト単位で返します。ファイルが存在しないか、取得できない場合は 0 が返される。

ファイルがシンボリックリンクである場合、この関数はシンボリックリンクではなくターゲットの情報を返す。

exists()も参照

[since 6.0] void QFileInfo::stat()

ファイル・システムからすべての属性を読み込む。

これは、ファイルシステムに関する情報がワーカースレッドで収集され、QFileInfo インスタンスをキャッシュする形で UI に渡される場合に便利です。

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

setCaching() およびrefresh()も参照してください

QString QFileInfo::suffix() const

ファイルのサフィックス(拡張子)を返します。

接尾辞は、ファイル内の最後の '.' 以降のすべての文字で構成されます。

QFileInfo fi("/tmp/archive.tar.gz");
QString ext = fi.suffix();  // ext = "gz"

例: ファイルの接尾辞は、ファイルの命名規則とは無関係に、すべてのプラットフォームで等しく計算されます (たとえば、Unix の ".bashrc" は空のベース名を持ち、接尾辞は "bashrc" です)。

fileName()、completeSuffix()、baseName()、completeBaseName()も参照のこと

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

このファイル情報をother と交換する。この関数は非常に高速で、失敗することはない。

QString QFileInfo::symLinkTarget() const

シンボリックリンクが指すファイルまたはディレクトリへの絶対パス、またはオブジェクトがシンボリックリンクでない場合は空の文字列を返します。

この名前は既存のファイルを表すものではありません。

注意: exists() は、シンボリックリンクが既存のターゲットを指している場合はtrue を返し、そうでない場合はfalse を返す。

exists()、isSymLink()、isDir()、isFile()も参照のこと

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

Move-other をこのQFileInfo インスタンスに割り当てます。

QFileInfo &QFileInfo::operator=(const QFileInfo &fileinfo)

指定されたfileinfo のコピーを作成し、それをこのQFileInfo に割り当てます。

関連する非メンバー

QFileInfoList

QList<QFileInfo> のシノニム。

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

QFileInfo lhsrhs で参照されているものとは異なるファイルシステムエントリを参照している場合はtrue を返し、そうでない場合はfalse を返す。

operator==()も参照のこと

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

QFileInfo lhsQFileInfo rhs がファイルシステム上の同じエントリを参照している場合はtrue を返し、そうでない場合はfalse を返す。

ファイルシステムのエントリ参照(存在しないパスや空のパス)を含まない空のQFileInfo オブジェクトを2つ比較した結果は、未定義であることに注意。

警告: これは、同じターゲットを指す2つの異なるシンボリックリンクを比較しません。

警告 Windows では、同じファイルシステム・エントリを参照する長いパスと短いパスは、 異なるエントリを参照するものとして扱われる。

operator!=()も参照のこと

マクロ・ドキュメント

[since 6.0] QT_IMPLICIT_QFILEINFO_CONSTRUCTION

このマクロを定義すると、ほとんどのQFileInfo コンストラクタが明示的ではなく暗黙的になる。QFileInfo オブジェクトの作成にはコストがかかるため、特に安価な代替手段が存在する場合は、誤って作成しないようにすべきである。例えば

QDirIterator it(dir);
while (it.hasNext()) {
    // Implicit conversion from QString (returned by it.next()):
    // may create unnecessary data structures and cause additional
    // accesses to the file system. Unless this macro is defined,
    // this line does not compile.

    QFileInfo fi = it.next();

    ~~~
}

代わりに、適切なAPIを使用する:

QDirIterator it(dir);
while (it.hasNext()) {
    // Extract the QFileInfo from the iterator directly:
    QFileInfo fi = it.nextFileInfo();

    ~~~
}

QStringQFile などからの構築は、コピー初期化ではなく直接初期化を使用すれば常に可能である:

QFileInfo fi1 = some_string; // Does not compile unless this macro is defined
QFileInfo fi2(some_string);  // OK
QFileInfo fi3{some_string};  // Possibly better, avoids the risk of the Most Vexing Parse
auto fi4 = QFileInfo(some_string); // OK

このマクロは互換性のために提供されている。このマクロは互換性のために提供されています。

このマクロは Qt 6.0 で導入されました。

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