QFile Class
QFile クラスは、ファイルからの読み取りおよびファイルへの書き込みを行うためのインターフェースを提供します。詳細...
| ヘッダー: | #include <QFile> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
| qmake: | QT += core |
| 継承元: | QFileDevice |
| 継承元: |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QFileは、入出力およびネットワーク機能の一部です。
注:このクラスのすべての関数は再入可能である。
パブリック関数
| QFile() | |
| QFile(QObject *parent) | |
| QFile(const QString &name) | |
(since 6.0) | QFile(const std::filesystem::path &name) |
| QFile(const QString &name, QObject *parent) | |
(since 6.0) | QFile(const std::filesystem::path &name, QObject *parent) |
| virtual | ~QFile() |
| bool | copy(const QString &newName, std::optional<QFileDevice::Permissions> perm = std::nullopt) |
(since 6.0) bool | copy(const std::filesystem::path &newName) |
| bool | exists() const |
(since 6.0) std::filesystem::path | filesystemFileName() const |
(since 6.3) std::filesystem::path | filesystemSymLinkTarget() const |
| bool | link(const QString &linkName) |
(since 6.0) bool | link(const std::filesystem::path &newName) |
| bool | moveToTrash() |
(since 6.3) bool | open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions) |
| bool | open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) |
| bool | open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle) |
| bool | remove() |
| bool | rename(const QString &newName) |
(since 6.0) bool | rename(const std::filesystem::path &newName) |
| void | setFileName(const QString &name) |
(since 6.0) void | setFileName(const std::filesystem::path &name) |
| QString | symLinkTarget() const |
再実装されたパブリック関数
| virtual QString | fileName() const override |
| virtual bool | open(QIODeviceBase::OpenMode mode) override |
| virtual QFileDevice::Permissions | permissions() const override |
| virtual bool | resize(qint64 sz) override |
| virtual bool | setPermissions(QFileDevice::Permissions permissions) override |
| virtual qint64 | size() const override |
静的パブリックメンバー
| bool | copy(const QString &fileName, const QString &newName, std::optional<QFileDevice::Permissions> perm = std::nullopt) |
| QString | decodeName(const QByteArray &localFileName) |
| QString | decodeName(const char *localFileName) |
| QByteArray | encodeName(const QString &fileName) |
| bool | exists(const QString &fileName) |
(since 6.3) std::filesystem::path | filesystemSymLinkTarget(const std::filesystem::path &fileName) |
| bool | link(const QString &fileName, const QString &linkName) |
| bool | moveToTrash(const QString &fileName, QString *pathInTrash = nullptr) |
| QFileDevice::Permissions | permissions(const QString &fileName) |
(since 6.0) QFileDevice::Permissions | permissions(const std::filesystem::path &filename) |
| bool | remove(const QString &fileName) |
| bool | rename(const QString &oldName, const QString &newName) |
| bool | resize(const QString &fileName, qint64 sz) |
| bool | setPermissions(const QString &fileName, QFileDevice::Permissions permissions) |
(since 6.0) bool | setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec) |
(since 6.9) bool | supportsMoveToTrash() |
| QString | symLinkTarget(const QString &fileName) |
詳細な説明
QFileは、テキストファイルやバイナリファイル、リソースの読み書きを行うためのI/Oデバイスです。QFileは単独で使用することもできますが、QTextStream やQDataStream と組み合わせて使用するとより便利です。
ファイル名は通常、コンストラクタで渡されますが、setFileName() を使用することでいつでも設定可能です。QFile は、オペレーティングシステムにかかわらず、ファイル区切り文字として「/」を想定しています。他の区切り文字(例: 「\」)の使用はサポートされていません。
exists() を使用してファイルの存在を確認したり、remove() を使用してファイルを削除したりできます。(より高度なファイルシステム関連の操作については、QFileInfo およびQDir が提供されています。)
ファイルはopen() で開かれ、close() で閉じられ、flush() でフラッシュされます。 データの読み書きには通常、QDataStream またはQTextStream を使用しますが、QIODevice から継承された関数であるread()、readLine()、readAll()、write() を呼び出すこともできます。また、QFile はgetChar()、putChar()、ungetChar() も継承しており、これらは 1 文字ずつ処理します。
ファイルのサイズは、size() によって返されます。現在のファイル位置は、pos() を使用して取得したり、seek() を使用して新しいファイル位置に移動したりできます。ファイルの末尾に達した場合、atEnd() はtrue を返します。
ファイルの直接読み込み
次の例は、テキストファイルを1行ずつ読み込むものです:
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
while (!file.atEnd()) {
QByteArray line = file.readLine();
process_line(line);
}open() に渡されるText フラグは、Windows形式の改行文字(「\r\n 」)をC++形式の改行文字(「\n 」)に変換するようQtに指示します。デフォルトでは、QFileはバイナリモードとみなされます。つまり、ファイルに格納されているバイトに対して変換は行われません。
ストリームを使用したファイルの読み込み
次の例では、QTextStream を使用してテキストファイルを 1 行ずつ読み取ります:
QFile file("in.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
process_line(line);
}QTextStream は、ディスク上に保存されている8ビットのデータを、16ビットのUnicode `QString` に変換します。デフォルトでは、ファイルがUTF-8でエンコードされていると想定されます。これは、`QTextStream::setEncoding()` を使用して変更できます。
テキストを出力するには、演算子<<()を使用できます。この演算子は、左側にQTextStream を、右側にさまざまなデータ型(QString を含む)を受け取るようにオーバーロードされています:
QFile file("out.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
return;
QTextStream out(&file);
out << "The magic number is: " << 49 << "\n";QDataStream も同様で、operator<<() を使用してデータを書き込み、operator>>() を使用して読み戻すことができます。詳細については、クラスのドキュメントを参照してください。
シグナル
QTcpSocket などの他の `QIODevice ` 実装とは異なり、QFile は `aboutToClose()`、`bytesWritten()`、および `readyRead()` シグナルを発行しません。この実装上の詳細により、QFile は Unix プラットフォーム上のデバイスファイルなど、特定の種類のファイルの読み書きには適していません。
プラットフォーム固有の問題
I/O に関連する Qt API は、ファイルパスを表現するために UTF-16 ベースの QString を使用します。一方、標準の C++ API (<cstdio> または<iostream>) やプラットフォーム固有の API では、8 ビットエンコードされたパスが必要となる場合がよくあります。encodeName() およびdecodeName() を使用することで、これらの表現形式間の変換を行うことができます。
Unix では、一部の特殊なシステムファイル(例:/proc 内のファイル)に対して、size() は常に 0 を返しますが、そのようなファイルからさらにデータを読み取れる場合があります。そのデータは、read() を呼び出したことに対する直接的な応答として生成されます。 ただし、この場合、atEnd() を使用して読み取るべきデータが残っているかどうかを判断することはできません(atEnd() は、サイズが 0 であると主張するファイルに対しても true を返すためです)。代わりに、readAll() を呼び出すか、read() またはreadLine() を、データが読み取れなくなるまで繰り返し呼び出す必要があります。次の例では、QTextStream を使用して、/proc/modules を 1 行ずつ読み取っています:
QFile file("/proc/modules");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
return;
QTextStream in(&file);
QString line = in.readLine();
while (!line.isNull()) {
process_line(line);
line = in.readLine();
}Android では、コンテンツ URI を扱う際にいくつかの制限があります:
- Androidのネイティブファイルピッカーを実装したQFileDialog を通じてユーザーに確認を求め、アクセス権限が必要になる場合があります。
- 「Scoped storage」のガイドラインに従うよう心がけてください。例えば、他の公開された外部ディレクトリではなく、アプリ固有のディレクトリを使用することなどです。詳細については、ストレージのベストプラクティスも参照してください。
- Qt API(QFileなど)の設計上、これらのAPIをAndroidのMediaStoreAPIと完全に統合することはできません。
セキュリティに関する考慮事項
Windows パスの正規化
ファイルおよびディレクトリパスを扱うQt APIは、ネイティブのWindows APIとは異なる方法で正規化およびカノニカル化を行います:
これらの違いにより、文字列の比較やパターンマッチングに基づくセキュリティチェックを迂回する可能性が生じます。たとえば、以下のコードではどちらの比較でも「false 」という結果になりますが、このパスを QFile に渡すと、Program Files 内の「myapp.exe 」が正常に開かれます。
constQString path=u"C:\\PROGRA~1\\MyApp\\myapp.exe."_s;// 末尾のドットに注意
QFileInfo fi(path);
qDebug() << fi.canonicalFilePath().contains("Program Files"_L1); // false
qDebug() << (fi.suffix() == "exe"_L1); // false
QFile f(path);
f.open(QIODevice::WriteOnly);// trueファイルのアクセス権
ファイルのアクセス権は、Unix系システムとWindowsで扱いが異なります。Unix系システムのwritable ディレクトリ以外では、ファイルを作成することはできません。Windowsでは必ずしもそうとは限りません。たとえば、「マイ ドキュメント」ディレクトリは通常書き込み不可ですが、その中にファイルを作成することは可能です。
Qtによるファイル権限の扱いは限定的であり、これは特にQFile::setPermissions()関数に影響を与えます。Windows上では、Qtはレガシーな読み取り専用フラグのみを設定しますが、それもWrite*フラグが一切渡されていない場合に限られます。 Qtはアクセス制御リスト(ACL)を操作しないため、この関数はNTFSボリュームではほとんど役に立ちません。ただし、VFATファイルシステムを使用するUSBメモリでは、依然として有用な場合があります。POSIX ACLも同様に操作されません。
関連項目: QTextStream 、QDataStream 、QFileInfo 、QDir 、および『The Qt Resource System』。
メンバ関数のドキュメント
QFile::QFile()
QFile オブジェクトを生成します。
[explicit] QFile::QFile(QObject *parent)
指定されたparent を使用して、新しいファイルオブジェクトを作成します。
[explicit] QFile::QFile(const QString &name)
指定されたname を持つファイルを表す新しいファイルオブジェクトを生成します。
注: Qt 6.8までのバージョンでは 、下位互換性を確保するため、このコンストラクタは暗黙的です。Qt 6.9以降では、このコンストラクタは条件なくexplicit となります。ユーザーは、Qtのヘッダーをインクルードする前にQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH マクロを定義することで、以前のバージョンのQtであっても、このコンストラクタをexplicit に強制することができます。
[explicit, since 6.0] QFile::QFile(const std::filesystem::path &name)
指定されたname を持つファイルを表す新しいファイルオブジェクトを構築します。
注: Qt 6.8までのバージョンでは 、下位互換性を確保するため、このコンストラクタは暗黙的です。Qt 6.9以降、このコンストラクタは条件付きでexplicit となります。ユーザーは、Qtのヘッダーをインクルードする前にQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH マクロを定義することで、以前のバージョンのQtであっても、このコンストラクタをexplicit に強制することができます。
この関数は Qt 6.0 で導入されました。
QFile::QFile(const QString &name, QObject *parent)
指定されたparent を使用して、指定されたname を持つファイルを表す新しいファイルオブジェクトを作成します。
[since 6.0] QFile::QFile(const std::filesystem::path &name, QObject *parent)
指定されたparent を使用して、指定されたname を持つファイルを表す新しいファイルオブジェクトを作成します。
この関数は Qt 6.0 で導入されました。
[virtual noexcept] QFile::~QFile()
ファイルオブジェクトを破棄し、必要に応じてファイルを閉じます。
bool QFile::copy(const QString &newName, std::optional<QFileDevice::Permissions> perm = std::nullopt)
fileName() という名前のファイルをnewName にコピーします。
このファイルは、コピーされる前に閉じられます。
Qt 6.12 以降、呼び出し時に権限perm を指定できるようになりました。指定されない場合は、元のファイルの権限がコピーされます。新しいファイルは、指定された権限で作成されます。
コピーされるファイルがシンボリックリンク (symlink) の場合、リンク自体ではなく、そのリンクが指すファイルがコピーされます。権限を除き、その他のファイルメタデータはコピーされません。
成功した場合は `true ` を返し、失敗した場合は `false` を返します。
なお、newName という名前のファイルがすでに存在する場合、copy()はfalse を返します。これは、QFile がそのファイルを上書きしないことを意味します。ただし、この操作はアトミックではありません。チェックとコピーの間に、別のプロセスがnewName という名前のファイルを作成する可能性があります。その場合、ファイルは上書きされます。
注: Androidでは 、content スキームの URI に対して、この操作はまだサポートされていません。
setFileName()も参照してください 。
[since 6.0] bool QFile::copy(const std::filesystem::path &newName)
これはオーバーロードされた関数です。
この関数は Qt 6.0 で導入されました。
[static] bool QFile::copy(const QString &fileName, const QString &newName, std::optional<QFileDevice::Permissions> perm = std::nullopt)
fileName という名前のファイルをnewName にコピーします。
Qt 6.12 以降、呼び出し時にperm の権限を指定できるようになりました。指定されない場合は、元のファイルの権限がコピーされます。新しいファイルは、指定された権限で作成されます。
コピー先のファイルがシンボリックリンク(symlink)である場合、リンク自体ではなく、そのリンクが指すファイルがコピーされます。権限を除き、その他のファイルメタデータはコピーされません。
成功した場合は `true ` を返し、失敗した場合は `false` を返します。
なお、newName という名前のファイルがすでに存在する場合、copy()はfalse を返します。これは、QFile がそのファイルを上書きしないことを意味します。ただし、この操作は原子的ではありません。チェックとコピーの間に、別のプロセスがnewName という名前のファイルを作成する可能性があります。その場合、ファイルは上書きされます。
注: Androidでは 、content スキーマの URI に対して、この操作はまだサポートされていません。
これはオーバーロードされた関数です。
rename()も参照してください 。
[static] QString QFile::decodeName(const QByteArray &localFileName)
これは、localFileName を使用して、QFile::encodeName() の逆の処理を行います。
encodeName()も参照してください 。
[static] QString QFile::decodeName(const char *localFileName)
指定されたlocalFileName のUnicodeバージョンを返します。詳細については、encodeName()を参照してください。
これはオーバーロードされた関数です。
[static] QByteArray QFile::encodeName(const QString &fileName)
fileName を、ネイティブAPIで使用可能な8ビットエンコーディングに変換します。Windowsでは、アクティブなWindows(ANSI)コードページに基づくエンコーディングが使用されます。その他のプラットフォームではUTF-8が使用され、macOSでは分解形式(NFD)で処理されます。
decodeName()も参照してください 。
[static] bool QFile::exists(const QString &fileName)
fileName で指定されたファイルが存在する場合、true を返します。存在しない場合は、false を返します。
注: fileName が存在しないファイルを指すシンボリックリンクである場合 、false が返されます。
bool QFile::exists() const
fileName() で指定されたファイルが存在する場合、true を返します。存在しない場合は、false を返します。
これはオーバーロードされた関数です。
fileName() およびsetFileName()も参照してください 。
[override virtual] QString QFile::fileName() const
QFileDevice::fileName() const を再実装します。
setFileName()、rename()、またはQFile のコンストラクタによって設定されたファイル名を返します。
setFileName()、rename()、およびQFileInfo::fileName()も参照してください 。
[since 6.0] std::filesystem::path QFile::filesystemFileName() const
fileName() をstd::filesystem::path として返します。
この関数は Qt 6.0 で導入されました。
[since 6.3] std::filesystem::path QFile::filesystemSymLinkTarget() const
symLinkTarget() を、std::filesystem::path として返します。
この関数は Qt 6.3 で導入されました。
[static, since 6.3] std::filesystem::path QFile::filesystemSymLinkTarget(const std::filesystem::path &fileName)
fileName のstd::filesystem::path としてsymLinkTarget()を返します。
この関数は Qt 6.3 で導入されました。
bool QFile::link(const QString &linkName)
linkName という名前のリンクを作成し、fileName() で現在指定されているファイルを指すようにします。リンクの具体的な形式は、基盤となるファイルシステムによって異なります(Windows ではショートカット、Unix ではシンボリックリンクなど)。成功した場合はtrue を返し、そうでない場合はfalse を返します。
この関数は、ファイルシステム上にすでに存在するエンティティを上書きすることはありません。その場合、link() はfalseを返し、error()がRenameError を返すように設定されます。
注: Windowsで有効なリンクを作成するには 、linkName のファイル拡張子が.lnk である必要があります。
関連項目: setFileName()。
[since 6.0] bool QFile::link(const std::filesystem::path &newName)
これはオーバーロードされた関数です。
この関数は Qt 6.0 で導入されました。
[static] bool QFile::link(const QString &fileName, const QString &linkName)
linkName という名前のリンクを作成し、fileName というファイルを指すようにします。リンクの具体的な形式は、基盤となるファイルシステムによって異なります(Windows ではショートカット、Unix ではシンボリックリンクなど)。成功した場合はtrue を返し、失敗した場合はfalse を返します。
これはオーバーロードされた関数です。
link()も参照してください 。
bool QFile::moveToTrash()
fileName() で指定されたファイルをゴミ箱に移動します。成功した場合はtrue を返し、fileName() を、ゴミ箱内のそのファイルのパスに設定します。失敗した場合はfalse を返します。
この関数の実行時間は、ゴミ箱に移動されるファイルのサイズには依存しません。ディレクトリに対してこの関数が呼び出された場合、実行時間はゴミ箱に移動されるファイルの数に比例する可能性があります。現在のfileName()がシンボリックリンクを指している場合、この関数はリンク自体をゴミ箱に移動します(これによりリンクが破損する可能性があります)。リンク先のファイルは移動されません。
この関数は、Windows および macOS では、それぞれのオペレーティングシステムの API を使用してゴミ箱への移動を行います。それ以外の環境(Unix 系システム)では、この関数はFreeDesktop.org Trash 仕様バージョン 1.0 を実装しています。
注: FreeDesktop.orgのTrash実装を使用する場合 、ファイル名の変更やハードリンクを利用してファイルをゴミ箱の場所に移動できないと、この関数は失敗します。 この状況は、ゴミ箱に移動されるファイルが、現在のユーザーが.Trash ディレクトリを作成する権限を持たないボリューム(マウントポイント)上に存在する場合、または一部の特殊なファイルシステムの種類や構成(それ自体がマウントポイントではないサブボリュームなど)の場合に発生します。
注: システム API がゴミ箱内のファイルの場所を報告しないシステムでは 、ファイルが移動されると `fileName()` は空文字列に設定されます。ゴミ箱機能がないシステムでは、この関数は常に `false ` を返します(`supportsMoveToTrash()` を参照)。
supportsMoveToTrash()、remove()、およびQDir::remove()も参照してください 。
[static] bool QFile::moveToTrash(const QString &fileName, QString *pathInTrash = nullptr)
fileName で指定されたファイルをゴミ箱に移動します。成功した場合はtrue を返し、pathInTrash (指定されている場合)を、ゴミ箱内のファイルの保存パスに設定します。それ以外の場合はfalse を返します。
この関数の実行時間は、ゴミ箱に移動されるファイルのサイズとは無関係です。ディレクトリに対してこの関数が呼び出された場合、実行時間はゴミ箱に移動されるファイルの数に比例する可能性があります。現在のfileName() がシンボリックリンクを指している場合、この関数はリンク自体をゴミ箱に移動し(これによりリンクが破損する可能性があります)、リンク先のファイルは移動しません。
この関数は、Windows および macOS では、それぞれのオペレーティングシステムの API を使用してゴミ箱への移動を行います。それ以外の環境(Unix 系システム)では、この関数はFreeDesktop.org Trash 仕様バージョン 1.0 を実装しています。
注: FreeDesktop.orgのTrash実装を使用する場合 、ファイル名の変更やハードリンクを利用してファイルをゴミ箱の場所に移動できないと、この関数は失敗します。 この状況は、ゴミ箱に移動されるファイルが、現在のユーザーが.Trash ディレクトリを作成する権限を持たないボリューム(マウントポイント)上に存在する場合、または一部の特殊なファイルシステムタイプや構成(それ自体がマウントポイントではないサブボリュームなど)の場合に発生します。
注: システム API がゴミ箱内のファイルのパスを報告しないシステムでは 、ファイルが移動されるとpathInTrash は空文字列に設定されます。ゴミ箱機能がないシステムでは、この関数は常に false を返します。
これはオーバーロードされた関数です。
[override virtual] bool QFile::open(QIODeviceBase::OpenMode mode)
QIODevice::open (QIODeviceBase::OpenMode mode)を再実装します。
mode フラグを使用してファイルを開き、成功した場合は `true ` を返し、失敗した場合は `false` を返します。
mode のフラグには、QIODeviceBase::ReadOnly 、WriteOnly 、またはReadWrite を含める必要があります。また、Text やUnbuffered などの追加のフラグを含めることもできます。
注: WriteOnly またはReadWrite モードでは 、該当するファイルがまだ存在しない場合、この関数はファイルを開く前に新しいファイルの作成を試みます。POSIXシステムでは、umaskによってマスクされたモード0666でファイルが作成され、Windowsでは親ディレクトリから権限が継承されます。 Android では、ファイル名の親ディレクトリへのアクセス権限が必要とされます。そうでない場合、この存在しないファイルを作成することはできません。
QT_USE_NODISCARD_FILE_OPEN およびsetFileName()も参照してください 。
[since 6.3] bool QFile::open(QIODeviceBase::OpenMode mode, QFileDevice::Permissions permissions)
ファイルが存在せず、mode によってその作成が必要となる場合、指定されたpermissions でファイルが作成されます。
POSIX システムでは、実際の権限はumask の値によって影響を受けます。
Windows では、権限は ACL を使用してエミュレートされます。グループに他のユーザーよりも少ない権限が付与されている場合、これらの ACL の順序は標準的な順序とは異なる場合があります。このような権限が設定されたファイルやディレクトリについては、「プロパティ」ダイアログの [セキュリティ] タブを開いた際に警告が表示されます。グループに他のユーザーに付与されているすべての権限を付与することで、このような警告を回避できます。
これはオーバーロードされた関数です。
この関数は Qt 6.3 で導入されました。
QIODevice::OpenMode 、setFileName()、およびQT_USE_NODISCARD_FILE_OPENも参照してください 。
bool QFile::open(FILE *fh, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
既存のファイルハンドル `fh ` を、指定された `mode` で開きます。追加のオプションを指定するには、`handleFlags ` を使用できます。成功した場合は `true ` を返し、失敗した場合は `false` を返します。
例:
#include <stdio.h>
void printError(const char* msg)
{
QFile file;
file.open(stderr, QIODevice::WriteOnly);
file.write(msg, qstrlen(msg)); // write to stderr
file.close();
}この関数を使用してQFile を開いた場合、close()の動作はAutoCloseHandleフラグによって制御されます。AutoCloseHandleが指定されており、この関数が成功した場合、close()を呼び出すと、そのハンドルが閉じられます。そうでない場合、close()はファイルを実際に閉じるのではなく、単にフラッシュするだけです。
警告:
- fh が通常のファイルを指していない場合(例:
stdin、stdout、またはstderrなど)、seek()を実行できない可能性があります。そのような場合、size()は0を返します。詳細については、QIODevice::isSequential()を参照してください。 - この関数はファイル名を指定せずにファイルを開くため、このQFile をQFileInfo と組み合わせて使用することはできません。
Windowsプラットフォームに関する注意
fh ファイルやその他のランダムアクセスデバイスにアクセスする際は、バイナリモード(つまり、モード文字列に「rb」や「wb」のように「b」が含まれている必要がある)で開く必要があります。mode に QIODevice::Text を渡すと、Qt は改行文字を変換します。stdin や stdout などのシーケンシャルデバイスは、この制限の影響を受けません。
コンソールで stdin、stdout、stderr ストリームを使用するには、コンソールアプリケーションのサポートを有効にする必要があります。これを行うには、アプリケーションのプロジェクトファイルに次の宣言を追加してください:
CONFIG += consoleこれはオーバーロードされた関数です。
close() およびQT_USE_NODISCARD_FILE_OPENも参照してください 。
bool QFile::open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
既存のファイルディスクリプタfd を、指定されたmode で開きます。追加のオプションを指定するには、handleFlags を使用できます。成功した場合はtrue を返し、失敗した場合はfalse を返します。
この関数を使用してQFile が開かれた場合、close()の動作はAutoCloseHandleフラグによって制御されます。AutoCloseHandleが指定されており、かつこの関数が成功した場合、close()を呼び出すと、引き継がれたハンドルが閉じられます。そうでない場合、close()は実際にはファイルを閉じず、単にフラッシュするだけです。
警告: fd が通常のファイルでない場合( 例えば、0(stdin )、1(stdout )、または 2(stderr )である場合) 、seek() を実行できない可能性があります。そのような場合、size() は0 を返します。詳細については、QIODevice::isSequential() を参照してください。
これはオーバーロードされた関数です。
close() およびQT_USE_NODISCARD_FILE_OPENも参照してください 。
[override virtual] QFileDevice::Permissions QFile::permissions() const
QFileDevice::permissions() const を再実装します。
setPermissions()も参照してください 。
[static] QFileDevice::Permissions QFile::permissions(const QString &fileName)
fileName に対する QFile::Permission の組み合わせをすべて OR 演算で結合した結果を返します。
これはオーバーロードされた関数です。
[static, since 6.0] QFileDevice::Permissions QFile::permissions(const std::filesystem::path &filename)
これはオーバーロードされた関数です。
この関数は Qt 6.0 で導入されました。
bool QFile::remove()
fileName() で指定されたファイルを削除します。
ファイルの削除に成功した場合は `true ` を返し、失敗した場合は `false` を返します。
ファイルが開かれている場合は、削除前に閉じられます。
setFileName()も参照してください 。
[static] bool QFile::remove(const QString &fileName)
指定されたfileName で指定されたファイルを削除します。
ファイルが正常に削除された場合はtrue を返し、そうでない場合はfalse を返します。
これはオーバーロードされた関数です。
remove()も参照してください 。
bool QFile::rename(const QString &newName)
fileName() で指定された現在のファイル名をnewName に変更します。成功した場合はtrue を返し、失敗した場合はfalse を返します。
newName という名前のファイルがすでに存在する場合、rename() はfalse を返します(つまり、QFile はそのファイルを上書きしません)。
ファイルは、名前が変更される前に閉じられます。
名前変更操作が失敗した場合、Qt はこのファイルの内容をnewName にコピーしようと試み、その後このファイルを削除して、newName のみを残します。そのコピー操作が失敗した場合、またはこのファイルを削除できない場合は、宛先ファイルnewName が削除され、以前の状態が復元されます。
setFileName()も参照してください 。
[since 6.0] bool QFile::rename(const std::filesystem::path &newName)
これはオーバーロードされた関数です。
この関数は Qt 6.0 で導入されました。
[static] bool QFile::rename(const QString &oldName, const QString &newName)
ファイル「oldName 」の名前を「newName 」に変更します。成功した場合は「true 」を返し、失敗した場合は「false 」を返します。
newName という名前のファイルがすでに存在する場合、rename() はfalse を返します(つまり、QFile は上書きされません)。
これはオーバーロードされた関数です。
rename()も参照してください 。
[override virtual] bool QFile::resize(qint64 sz)
QFileDevice::resize (qint64 sz)を再実装します。
[static] bool QFile::resize(const QString &fileName, qint64 sz)
fileName をsize(バイト単位)sz に設定します。リサイズに成功した場合はtrue を返し、そうでない場合はfalseを返します。sz がfileName の現在のサイズよりも大きい場合、新しいバイトは0に設定されます。sz が小さい場合は、ファイルは単に切り捨てられます。
警告: ファイルが存在しない場合、この関数は 失敗する可能性があります。
これはオーバーロードされた関数です。
resize()も参照してください 。
void QFile::setFileName(const QString &name)
ファイルのname を設定します。名前には、パスを含まないもの、相対パス、または絶対パスを指定できます。
ファイルがすでに開かれている場合は、この関数を呼び出さないでください。
ファイル名にパスが含まれていない場合、または相対パスが指定されている場合、 open() の呼び出し時のアプリケーションの現在のディレクトリパスが使用されます。
例:
QFile file;
QDir::setCurrent("/tmp");
file.setFileName("readme.txt");
QDir::setCurrent("/home");
file.open(QIODevice::ReadOnly); // opens "/home/readme.txt" under Unixディレクトリ区切り文字「/」は、Qtがサポートするすべてのオペレーティングシステムで機能することに注意してください。
関連項目: fileName()、QFileInfo 、およびQDir 。
[since 6.0] void QFile::setFileName(const std::filesystem::path &name)
これはオーバーロードされた関数です。
この関数は Qt 6.0 で導入されました。
[override virtual] bool QFile::setPermissions(QFileDevice::Permissions permissions)
QFileDevice::setPermissions (QFileDevice::Permissions の権限)を再実装します。
ファイルのアクセス権を、指定されたpermissions に設定します。成功した場合はtrue を返し、アクセス権を変更できない場合はfalse を返します。
警告: この関数はACLを 操作しないため、その有効性が制限される場合があります。
関連項目: permissions() およびsetFileName()。
[static] bool QFile::setPermissions(const QString &fileName, QFileDevice::Permissions permissions)
fileName ファイルの権限をpermissions に設定します。
これはオーバーロードされた関数です。
[static, since 6.0] bool QFile::setPermissions(const std::filesystem::path &filename, QFileDevice::Permissions permissionSpec)
これはオーバーロードされた関数です。
この関数は Qt 6.0 で導入されました。
[override virtual] qint64 QFile::size() const
QFileDevice::size() const を再実装します。
[static, since 6.9] bool QFile::supportsMoveToTrash()
Qt XMLが、moveToTrash()関数を使用して現在のオペレーティングシステム上でファイルをゴミ箱(リサイクルビン)に移動することをサポートしている場合はtrue を返し、そうでない場合はfalse を返します。なお、この関数がtrue を返したとしても、moveToTrash()が成功することを意味するわけではありません。特に、この関数は、ユーザーが設定でこの機能を無効にしているかどうかを検証しません。
この関数は Qt 6.9 で導入されました。
moveToTrash()も参照してください 。
[static] QString QFile::symLinkTarget(const QString &fileName)
fileName で指定されたシンボリックリンク(Windows ではショートカット)が指すファイルまたはディレクトリの絶対パスを返します。fileName がシンボリックリンクに対応していない場合は、空の文字列を返します。
この名前は既存のファイルを表すものではなく、単なる文字列です。QFile::exists() は、シンボリックリンクが既存のファイルを指している場合にのみ、true を返します。
QString QFile::symLinkTarget() const
シンボリックリンク(Windows ではショートカット)が指すファイルまたはディレクトリの絶対パスを返します。オブジェクトがシンボリックリンクでない場合は、空の文字列を返します。
この名前は、必ずしも既存のファイルを表すとは限りません。これは単なる文字列にすぎません。QFile::exists() は、シンボリックリンクが既存のファイルを指している場合に、true を返します。
これはオーバーロードされた関数です。
fileName() およびsetFileName()も参照してください 。
© 2026 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.