QFile Class
QFile クラスは、ファイルからの読み込みとファイルへの書き込みのためのインターフェイスを提供します。詳細...
ヘッダー | #include <QFile> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
を継承する: | QFileDevice |
継承元: |
- 継承メンバを含む全メンバのリスト
- QFileは、Input/OutputおよびNetworkingに含まれる。
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
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) |
(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) |
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) |
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 形式の行終端記号 (" \rn") を 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 に変換します。デフォルトでは、ファイルはUTF-8でエンコードされていると仮定します。これは () で変更できます。QString 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ベースのQStringsを使用します。しかし、標準的な C++ API (<cstdio>
や<iostream>
) やプラットフォーム固有の API では、8 ビットでエンコードされたパスが必要になることがよくあります。encodeName() やdecodeName() を使えば、両方の表現を変換することができます。
readUnixでは、size()が常に0を返すような特殊なシステム・ファイル(例:/proc
)が存在するが、そのようなファイルからさらにデータを読み取ることができる場合がある。しかしこの場合、atEnd() を使用して、さらに読み込むデータがあるかどうかを判断することはできません(atEnd() は、サイズが0であると主張するファイルに対して真を返すからです)。代わりに、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(); }
ファイルのパーミッションは、Unixライク・システムとWindowsでは扱いが異なる。Unix系システムでは、writable 以外のディレクトリーではファイルを作成できない。Windowsでは、例えば'My Documents'ディレクトリは通常書き込みできませんが、ファイルを作成することは可能です。
Qtのファイルパーミッションに関する理解は限られており、これは特にQFile::setPermissions()関数に影響します。Windows では、Qt はレガシーな読み取り専用フラグのみを設定します。Qt はアクセス制御リスト (ACL) を操作しないので、この関数は NTFS ボリュームに対してはほとんど役に立ちません。VFATファイルシステムを使用しているUSBスティックでは、まだ使えるかもしれません。POSIX ACLも操作できません。
Androidでは、コンテンツURIを扱う際にいくつかの制限が適用される:
- Androidのネイティブファイルピッカーを実装しているQFileDialog 、ユーザーにプロンプトを出すことでアクセス許可が必要になるかもしれない。
- 他の公開外部ディレクトリの代わりにアプリ固有のディレクトリを使用するなど、Scopedストレージのガイドラインに従うことを目指してください。詳しくは、ストレージのベストプラクティスを参照してください。
- Qt API(QFileなど)の設計上、Qt APIとAndroidのMediaStoreAPIを完全に統合することはできません。
QTextStream,QDataStream,QFileInfo,QDir,The Qt Resource Systemも参照してください 。
メンバー関数ドキュメント
QFile::QFile()
QFile オブジェクトを構築します。
[explicit]
QFile::QFile(QObject *parent)
与えられたparent で新しいファイルオブジェクトを構築する。
QFile::QFile(const QString &name)
与えられたname のファイルを表す新しいファイルオブジェクトを構築します。
注意: Qt 6.8 までのバージョンでは、後方互換性のためにこのコンストラクタは暗黙的です。Qt 6.9 以降では、このコンストラクタは無条件にexplicit
となります。Qt ヘッダをインクルードする前に、QT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH
マクロを定義することで、以前のバージョンの Qt でもこのコンストラクタを強制的に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)
指定されたname のファイルを表すために、与えられたparent で新しいファイルオブジェクトを構築する。
[since 6.0]
QFile::QFile(const std::filesystem::path &name, QObject *parent)
指定されたname のファイルを表すために、与えられたparent で新しいファイルオブジェクトを構築します。
この関数は Qt 6.0 で導入されました。
[virtual noexcept]
QFile::~QFile()
ファイルオブジェクトを破棄し、必要であれば閉じます。
bool QFile::copy(const QString &newName)
fileName() という名前のファイルをnewName にコピーする。
このファイルはコピーされる前に閉じられる。
コピーされたファイルがシンボリックリンク(シンボリックリンク)である場合、リンク自体ではなく、参照先のファイルがコピーされる。パーミッションはコピーされるが、それ以外のファイルのメタデータはコピーされない。
成功すればtrue
を返し、そうでなければfalse
を返す。
newName という名前のファイルが既に存在する場合、 copy() はfalse
を返すことに注意。これは、QFile が上書きされないことを意味する。
注意: 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)
これはオーバーロードされた関数である。
fileName という名前のファイルをnewName にコピーする。
このファイルはコピーされる前に閉じられる。
コピーされたファイルがシンボリックリンク(シンボリックリンク)である場合、リンク自体ではなく、そのファイルが参照しているファイルがコピーされる。パーミッションはコピーされるが、それ以外のファイルのメタデータはコピーされない。
成功すればtrue
を返し、そうでなければfalse
を返す。
newName という名前のファイルが既に存在する場合、 copy() はfalse
を返すことに注意。これは、QFile が上書きされないことを意味する。
注意: 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() あるいはQFile コンストラクタで設定した名前を返します。
setFileName() およびQFileInfo::fileName()も参照 。
[since 6.0]
std::filesystem::path QFile::filesystemFileName() const
std::filesystem::path
としてfileName() を返す。
この関数は Qt 6.0 で導入されました。
[since 6.3]
std::filesystem::path QFile::filesystemSymLinkTarget() const
std::filesystem::path
としてsymLinkTarget() を返す。
この関数は 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)
現在fileName() で指定されているファイルを指すlinkName という名前のリンクを作成する。リンクが何であるかは、基礎となるファイルシステム(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)
これはオーバーロードされた関数である。
ファイルfileName を指すlinkName という名前のリンクを作成します。リンクが何であるかは、基礎となるファイルシステム(Windowsではショートカット、Unixではシンボリックリンク)に依存する。成功すればtrue
を返し、そうでなければfalse
を返す。
link()も参照 。
bool QFile::moveToTrash()
fileName() で指定されたファイルをゴミ箱に移動する。成功した場合はtrue
を返し、fileName() にゴミ箱内でファイルが見つかるパスを設定する。そうでない場合はfalse
を返す。
この関数の実行時間は、ゴミ箱に入れるファイルのサイズとは無関係である。この関数がディレクトリ上で呼び出される場合、ゴミ箱に入れられるファイルの数に比例する可能性がある。現在のfileName() がシンボリックリンクを指している場合、この関数はリンクをゴミ箱に移動し、リンクのターゲットではなく、リンクを壊す可能性がある。
この関数は、WindowsとmacOSのAPIを使用して、これら2つのオペレーティング・システム上でゴミ箱への移動を実行します。それ以外のシステム(Unixシステム)では、この関数はFreeDesktop.orgのゴミ箱仕様バージョン1.0を実装しています。
注意: FreeDesktop.org Trashの実装を使用する場合、ファイル名の変更やハードリンクによってファイルをゴミ箱の場所に移動できない場合、この関数は失敗します。このような状況は、現在のユーザーが.Trash
ディレクトリを作成する権限を持っていないボリューム (マウントポイント) にゴミ箱のファイルが存在する場合や、(マウントポイントではないサブボリュームなどの) 異常なファイルシステムの種類や構成で発生します。
注意: システムAPIがゴミ箱内のファイルの場所を報告しないシステムでは、ファイルが移動されると、fileName() にヌル文字列が設定されます。ゴミ箱がないシステムでは、この関数は常に false を返します。
[static]
bool QFile::moveToTrash(const QString &fileName, QString *pathInTrash = nullptr)
これはオーバーロードされた関数である。
fileName で指定されたファイルをゴミ箱に移動する。成功すればtrue
を返し、pathInTrash (もしあれば) をゴミ箱内でファイルが見つかるパスに設定する。そうでなければfalse
を返す。
この関数の実行時間は、ゴミ箱に入れるファイルのサイズに依存しない。この関数がディレクトリ上で呼び出される場合、ゴミ箱に入れられるファイルの数に比例する可能性がある。現在のfileName() がシンボリックリンクを指している場合、この関数はリンクをゴミ箱に移動し、リンクのターゲットではなく、リンクを壊す可能性がある。
この関数は、WindowsとmacOSのAPIを使用して、これら2つのオペレーティング・システム上でゴミ箱への移動を実行します。それ以外のシステム(Unixシステム)では、この関数はFreeDesktop.orgのゴミ箱仕様バージョン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)
これはオーバーロードされた関数である。
与えられたmode にある既存のファイルハンドルfh をオープンします。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'が含まれている必要があります)。Qt は、QIODevice::Text を に渡すと、行末文字を変換します。 stdin や stdout のようなシーケンシャルデバイスは、この制限の影響を受けません。mode
コンソールでstdin、stdout、stderrストリームを使用するには、コンソール・アプリケーションのサポートを有効にする必要があります。これを行うには、アプリケーションのプロジェクト・ファイルに以下の宣言を追加します:
CONFIG += console
close() およびQT_USE_NODISCARD_FILE_OPENも参照して ください。
bool QFile::open(int fd, QIODeviceBase::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
これはオーバーロードされた関数である。
与えられたmode にある既存のファイル記述子fd をオープンします。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 をサイズ(バイト単位)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).
ファイルのパーミッションを指定された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]
QString QFile::symLinkTarget(const QString &fileName)
fileName で指定されたシンボリックリンク(Windows ではショートカット)が参照するファイルまたはディレクトリの絶対パスを返すか、fileName がシンボリックリンクに対応していない場合は空文字列を返す。
この名前は既存のファイルを表すものではなく、単なる文字列である。QFile::existsシンボリックリンクが既存のファイルを指している場合、() はtrue
を返す。
QString QFile::symLinkTarget() const
これはオーバーロードされた関数です。
シンボリックリンク(Windowsではショートカット)が指すファイルまたはディレクトリの絶対パス、またはオブジェクトがシンボリックリンクでない場合は空の文字列を返します。
この名前は既存のファイルを表すものではありません。QFile::existsシンボリックリンクが既存のファイルを指している場合、() はtrue
を返す。
fileName() およびsetFileName()も参照のこと 。
© 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.