QFile Class
QFile クラスは、ファイルからの読み込みとファイルへの書き込みのためのインターフェイスを提供します。詳細...
Header: | #include <QFile> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Inherits: | QFileDevice |
Inherited By: |
注意:このクラスの関数はすべてリエントラントです。
パブリック関数
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() に渡された QIODevice::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 ()を使用して、さらに読み込むデータがあるかどうかを判断することはできない(サイズ0と主張するファイルに対してatEnd ()は真を返すため)。代わりに、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など)の設計上、後者の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).
OpenModemode 、成功すればtrueを返し、そうでなければfalseを返します。
mode は、QIODevice::ReadOnly、QIODevice::WriteOnly、または QIODevice::ReadWrite でなければなりません。QIODevice::TextやQIODevice::Unbufferedなどの追加フラグを持つこともできます。
注意: WriteOnly またはReadWrite モードでは、該当するファイルがまだ存在しない場合、この関数はファイルを開く前に新しいファイルの作成を試みます。ファイルは、POSIXシステムではumaskによってマスクされたモード0666で作成され、Windowsでは親ディレクトリから継承されたパーミッションで作成されます。Androidでは、ファイル名の親に対するアクセス・パーミッションを持っていることが期待されるが、そうでなければ、この存在しないファイルを作成することはできない。
QT_USE_NODISCARD_FILE_OPEN,QIODevice::OpenMode,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)
これはオーバーロードされた関数です。
既存のファイル記述子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 のサイズ(バイト数)を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()も参照してください 。
本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。