目录
1.概要
文件备份
需求场景:有时候,防止重要的配置文件丢失,或者因设置错误导致不可挽回的情况,在数据发生变化前,做一个备份。
2.内容
在Ubuntu系统下使用Qt C++实现将当前文件备份到指定目录并重新命名,可以按照以下步骤进行。这里假设你有一个Qt项目,并且需要备份当前源文件到指定目录。
步骤说明
- 获取当前时间并格式化:使用
QDateTime
类获取当前日期和时间,并将其格式化为字符串。 - 构建新文件名:将原文件名与时间戳结合,形成新的文件名。
- 执行文件复制操作:使用
QFile
类完成文件的复制。
示例代码
#include <QCoreApplication>
#include <QDateTime>
#include <QFile>
#include <QDir>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 获取当前文件的路径
QString sourceFilePath = QCoreApplication::applicationFilePath();
qDebug() << "Source file path:" << sourceFilePath;
// 定义备份目录(你可以根据需要修改这个路径)
QString backupDir = "/path/to/backup/directory";
// 获取当前时间并格式化为字符串
QDateTime currentDateTime = QDateTime::currentDateTime();
QString currentTimeStamp = currentDateTime.toString("yyyyMMddHHmmss");
// 获取原文件名(不带路径)
QFileInfo sourceFileInfo(sourceFilePath);
QString originalFileName = sourceFileInfo.fileName();
// 构建新文件名
QString newFileName = originalFileName + "_" + currentTimeStamp;
// 构建目标文件路径
QString destFilePath = QDir(backupDir).filePath(newFileName);
// 确保备份目录存在
QDir().mkpath(backupDir);
// 执行文件复制操作
if (QFile::copy(sourceFilePath, destFilePath)) {
qDebug() << "File backed up successfully to:" << destFilePath;
} else {
qDebug() << "Failed to back up file.";
}
return a.exec();
}
代码解释
-
获取当前文件路径:
QString sourceFilePath = QCoreApplication::applicationFilePath();
这行代码获取当前可执行文件的路径。
-
定义备份目录:
QString backupDir = "/path/to/backup/directory";
你需要将
/path/to/backup/directory
替换为实际的备份目录路径。 -
获取当前时间并格式化:
QDateTime currentDateTime = QDateTime::currentDateTime(); QString currentTimeStamp = currentDateTime.toString("yyyyMMddHHmmss");
这行代码获取当前日期和时间,并将其格式化为
yyyyMMddHHmmss
格式的字符串。 -
构建新文件名:
QString newFileName = originalFileName + "_" + currentTimeStamp;
这行代码将原文件名与时间戳结合,形成新的文件名。
-
构建目标文件路径:
QString destFilePath = QDir(backupDir).filePath(newFileName);
这行代码将备份目录和新文件名结合,形成目标文件路径。
-
确保备份目录存在:
QDir().mkpath(backupDir);
这行代码确保备份目录存在,如果不存在则创建它。
-
执行文件复制操作:
if (QFile::copy(sourceFilePath, destFilePath)) { qDebug() << "File backed up successfully to:" << destFilePath; } else { qDebug() << "Failed to back up file."; }
这行代码使用
QFile::copy
函数将文件从源路径复制到目标路径,并输出复制结果。
注意事项
- 确保你有权限在目标目录中创建和写入文件。
- 根据你的实际需求,修改备份目录路径和其他相关参数。
- 如果你的项目是一个库或没有可执行文件,你可能需要调整获取当前文件路径的方式。
将上述代码添加到你的Qt项目中,并根据需要进行调整,即可实现将当前文件备份到指定目录并重新命名的功能。
1.将功能封装
好的,我将把文件备份功能封装成一个类,并将头文件和源文件分开。以下是实现:
头文件: filebackup.h
#ifndef FILEBACKUP_H
#define FILEBACKUP_H
#include <QString>
class FileBackup
{
public:
/**
* @brief 构造函数,初始化备份路径和要备份的文件路径
* @param backupDirPath 备份目录路径
* @param filePath 要备份的文件路径
*/
FileBackup(const QString& backupDirPath, const QString& filePath);
/**
* @brief 执行文件备份操作
* @return 成功返回true,失败返回false
*/
bool backupFile();
private:
QString m_backupDirPath; ///< 备份目录路径
QString m_filePath; ///< 要备份的文件路径
};
#endif // FILEBACKUP_H
源文件: filebackup.cpp
#include "filebackup.h"
#include <QDateTime>
#include <QFile>
#include <QDir>
#include <QDebug>
FileBackup::FileBackup(const QString& backupDirPath, const QString& filePath)
: m_backupDirPath(backupDirPath), m_filePath(filePath)
{
}
bool FileBackup::backupFile()
{
// 获取当前时间并格式化为字符串
QDateTime currentDateTime = QDateTime::currentDateTime();
QString currentTimeStamp = currentDateTime.toString("yyyyMMddHHmmss");
// 获取原文件名(不带路径)
QFileInfo sourceFileInfo(m_filePath);
QString originalFileName = sourceFileInfo.fileName();
// 构建新文件名
QString newFileName = originalFileName + "_" + currentTimeStamp;
// 构建目标文件路径
QString destFilePath = QDir(m_backupDirPath).filePath(newFileName);
// 确保备份目录存在
QDir().mkpath(m_backupDirPath);
// 执行文件复制操作
if (QFile::copy(m_filePath, destFilePath)) {
qDebug() << "File backed up successfully to:" << destFilePath;
return true;
} else {
qDebug() << "Failed to back up file.";
return false;
}
}
使用示例
在你的主程序文件中,你可以这样使用这个类:
#include <QCoreApplication>
#include "filebackup.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 定义备份目录和要备份的文件路径
QString backupDir = "/path/to/backup/directory";
QString filePath = "/path/to/source/file.txt";
// 创建FileBackup对象
FileBackup fileBackup(backupDir, filePath);
// 执行文件备份
if (fileBackup.backupFile()) {
qDebug() << "Backup successful!";
} else {
qDebug() << "Backup failed!";
}
return a.exec();
}
代码说明
- 头文件 (
filebackup.h
):- 定义了
FileBackup
类,包含构造函数和backupFile()
成员函数。 - 使用
QString
存储备份目录路径和要备份的文件路径。
- 定义了
- 源文件 (
filebackup.cpp
):- 实现了
FileBackup
类的构造函数和backupFile()
函数。 backupFile()
函数获取当前时间,构建新文件名,确保备份目录存在,并执行文件复制。
- 实现了
- 使用示例:
- 创建
FileBackup
对象时,通过构造函数传入备份目录和要备份的文件路径。 - 调用
backupFile()
函数执行备份操作,并根据返回值判断备份是否成功。
- 创建
这种封装方式使得代码更加模块化和易于维护,你可以在不同的地方重用FileBackup
类来完成文件备份任务。
3.关联链接
4.关联知识
1.QDateTime
QDateTime 是 Qt 框架中用于处理日期和时间的类,它结合了 QDate(日期)和 QTime(时间)的功能,能够表示一个具体的日期和时间点,包括年、月、日、时、分、秒。以下是对 QDateTime 的详细介绍:
一、主要功能
-
获取和设置日期时间
- 获取当前日期和时间:使用
QDateTime::currentDateTime()
静态函数,可以获取系统当前的日期和时间,返回一个 QDateTime 对象。 - 设置日期和时间:通过构造函数或
setDate()
、setTime()
方法,可以显式地设置 QDateTime 对象的日期和时间。
- 获取当前日期和时间:使用
-
日期和时间的操作
- 日期算术运算:可以使用
addDays()
、addMonths()
、addYears()
等方法,对日期进行加减运算。例如,addDays(7)
表示在当前日期上增加7天。 - 时间算术运算:可以使用
addSecs()
、addMSecs()
等方法,对时间进行加减运算。例如,addSecs(60)
表示在当前时间上增加60秒。 - 比较日期时间:提供了一整套运算符(
<
、<=
、==
、>=
、>
)用于比较两个 QDateTime 对象,判断它们之间的先后关系。
- 日期算术运算:可以使用
-
日期和时间的格式化
- 转换为字符串:使用
toString()
方法,可以将 QDateTime 对象转换为指定格式的字符串。例如,toString("yyyy-MM-dd hh:mm:ss")
将日期时间格式化为“年-月-日 时:分:秒”的形式。 - 从字符串转换:使用
fromString()
静态方法,可以将符合指定格式的字符串转换为 QDateTime 对象。
- 转换为字符串:使用
-
时区处理
- 本地时间与UTC时间的转换:使用
toUTC()
方法,可以将本地时间转换为UTC时间;使用toLocalTime()
方法,可以将UTC时间转换为本地时间。 - 获取时区信息:使用
timeSpec()
方法,可以确定 QDateTime 对象存储的是UTC时间还是本地时间。
- 本地时间与UTC时间的转换:使用
二、使用示例
以下是一个简单的示例,演示如何使用 QDateTime 获取当前日期和时间,并将其格式化为字符串输出:
#include <QCoreApplication>
#include <QDateTime>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 获取当前日期和时间
QDateTime currentDateTime = QDateTime::currentDateTime();
// 将日期时间格式化为字符串
QString dateTimeString = currentDateTime.toString("yyyy-MM-dd hh:mm:ss");
// 输出格式化后的日期时间
qDebug() << "当前日期和时间:" << dateTimeString;
return a.exec();
}
三、注意事项
- 日期范围:QDateTime 能够存储的日期范围取决于其内部存储实现。在 Qt 中,QDateTime 当前存储在
qint64
中,作为编码日期和时间的串行毫秒值,这限制了日期范围在大约正负2.92亿年左右。 - 时区处理:QDateTime 使用系统的时区信息来确定本地时间与UTC的偏移量。如果系统配置不正确或不是最新的,QDateTime 可能会给出错误的结果。
- 夏令时:QDateTime 在处理夏令时时会考虑系统的时区信息。在现代Unix系统上,它会尽可能应用正确的历史DST数据。在Windows上,如果系统不支持历史DST数据,则不会维护DST的历史准确性。
QDateTime 是 Qt 框架中处理日期和时间的重要工具,提供了丰富的功能和方法,方便开发者进行日期和时间的获取、设置、操作和格式化。通过合理使用 QDateTime,可以简化日期和时间的处理逻辑,提高代码的可读性和可维护性。
2.QFileInfo
QFileInfo 是 Qt 框架中用于获取文件信息的类,它提供了与系统无关的文件信息,包括文件名称、路径、大小、修改时间等。以下是关于 QFileInfo 的详细介绍:
一、主要功能
-
文件路径和名称
- 获取文件路径:
- absoluteFilePath():返回文件的绝对路径,包括文件名。
- absolutePath():返回文件的绝对路径,不包括文件名。
- canonicalFilePath():返回文件的规范路径,即没有符号链接或冗余的“.”或“..”元素的绝对路径。
- canonicalPath():返回文件的规范路径,不包括文件名。
- filePath():返回文件的路径和文件名,可以是绝对路径或相对路径。
- fileName():返回文件的名称,不包括路径。
- path():返回文件的路径,不包括文件名。
- absoluteDir():以 QDir 对象的形式返回文件的绝对路径。
- dir():返回文件所在的目录。
- 路径类型判断:
- isAbsolute():判断文件路径是否为绝对路径。
- isRelative():判断文件路径是否为相对路径。
- makeAbsolute():将相对路径转换为绝对路径。
- 获取文件路径:
-
文件类型判断
- isFile():判断文件是否为普通文件。
- isDir():判断文件是否为目录。
- isSymLink():判断文件是否为符号链接。
- isShortcut():在 Windows 上,判断文件是否为快捷方式(.lnk 文件)。
-
文件信息获取
- size():获取文件的大小(以字节为单位)。
- created():获取文件的创建时间。
- lastModified():获取文件的最后修改时间。
- lastRead():获取文件的最后读取时间。
- birthTime():获取文件的创建时间(在某些系统上可能不可用)。
- baseName():获取文件名的基本名称(不包括后缀)。
- completeBaseName():获取文件名的完整基本名称(包括点号前的所有部分)。
- suffix():获取文件名的后缀。
- completeSuffix():获取文件名的完整后缀(包括点号后的所有部分)。
- bundleName():在 macOS 和 iOS 上,获取包的名称。
-
文件权限和所有权
- isReadable():判断文件是否可读。
- isWritable():判断文件是否可写。
- isExecutable():判断文件是否可执行。
- owner():获取文件的所有者名称。
- ownerId():获取文件的所有者 ID。
- group():获取文件所属的用户组名称。
- groupId():获取文件所属的用户组 ID。
- permissions():获取文件的权限信息。
- permission(QFile::Permissions permissions):检查文件是否具有指定的权限。
-
符号链接处理
- symLinkTarget():返回符号链接指向的文件的名称。
-
其他功能
- exists():判断文件是否存在。
- caching():获取文件信息的缓存状态。
- setCaching(bool enable):设置文件信息的缓存状态。
- refresh():刷新文件信息。
- setFile(const QString &file):设置文件路径。
- setFile(const QFile &file):设置文件对象。
- setFile(const QDir &dir, const QString &file):设置文件相对于目录的路径。
二、使用示例
以下是一个简单的示例,演示如何使用 QFileInfo 获取文件的基本信息:
#include <QCoreApplication>
#include <QFileInfo>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建 QFileInfo 对象
QFileInfo fileInfo("/path/to/your/file.txt");
// 判断文件是否存在
if (fileInfo.exists()) {
qDebug() << "文件存在";
// 获取文件信息
qDebug() << "文件路径:" << fileInfo.absoluteFilePath();
qDebug() << "文件名称:" << fileInfo.fileName();
qDebug() << "文件大小:" << fileInfo.size() << "字节";
qDebug() << "创建时间:" << fileInfo.created().toString("yyyy-MM-dd hh:mm:ss");
qDebug() << "最后修改时间:" << fileInfo.lastModified().toString("yyyy-MM-dd hh:mm:ss");
qDebug() << "文件类型:" << (fileInfo.isFile() ? "普通文件" : (fileInfo.isDir() ? "目录" : "其他"));
// 判断文件权限
if (fileInfo.isReadable()) {
qDebug() << "文件可读";
}
if (fileInfo.isWritable()) {
qDebug() << "文件可写";
}
if (fileInfo.isExecutable()) {
qDebug() << "文件可执行";
}
} else {
qDebug() << "文件不存在";
}
return a.exec();
}
三、注意事项
- 文件路径:
- QFileInfo 可以处理绝对路径和相对路径。
- 使用相对路径时,路径是相对于当前工作目录的。
- 文件类型判断:
- isFile()、isDir() 和 isSymLink() 等函数用于判断文件的类型。
- 在某些系统上,符号链接和快捷方式的处理可能有所不同。
- 文件权限和所有权:
- isReadable()、isWritable() 和 isExecutable() 等函数用于判断文件的访问权限。
- owner()、ownerId()、group() 和 groupId() 等函数用于获取文件的所有权和所属用户组信息。
- 在某些系统上,文件权限和所有权信息的获取可能受到限制。
- 缓存机制:
- QFileInfo 使用缓存机制来提高性能。
- 使用 caching() 和 setCaching(bool enable) 可以控制缓存的启用和禁用。
- 在文件信息可能发生变化时,可以使用 refresh() 刷新缓存。
QFileInfo 是 Qt 框架中用于获取文件信息的强大工具,它提供了丰富的功能和方法,方便开发者获取文件的各种属性信息。通过合理使用 QFileInfo,可以简化文件操作的逻辑,提高代码的可读性和可维护性。
3.QDir
QDir 是 Qt 框架中用于操作和查询目录的类。它提供了与系统无关的目录和文件列表操作功能,使得开发者可以方便地遍历目录、创建或删除目录、过滤文件等。以下是关于 QDir 的详细介绍:
一、主要功能
-
目录路径操作
- 设置和获取路径:
- setPath(const QString &path):设置目录的路径。
- path():获取目录的路径。
- absolutePath():获取目录的绝对路径。
- canonicalPath():获取目录的规范路径,即没有符号链接或冗余的“.”或“..”元素的绝对路径。
- 路径类型判断:
- isAbsolute():判断目录路径是否为绝对路径。
- isRelative():判断目录路径是否为相对路径。
- makeAbsolute():将相对路径转换为绝对路径。
- 设置和获取路径:
-
目录和文件操作
- 创建和删除目录:
- mkpath(const QString &dirPath):创建目录及其所有父目录。
- rmdir(const QString &dirName):删除空目录。
- removeRecursively():递归删除目录及其内容。
- 目录存在性判断:
- exists():判断目录是否存在。
- exists(const QString &name):判断目录中的文件或子目录是否存在。
- 创建和删除目录:
-
目录内容查询
- 获取目录中的文件和子目录列表:
- entryList(Filters filters = NoFilter, SortFlags sort = NoSort):获取目录中的文件和子目录列表,可以根据过滤器和排序标志进行筛选和排序。
- entryInfoList(Filters filters = NoFilter, SortFlags sort = NoSort):获取目录中文件和子目录的 QFileInfo 列表,提供更详细的文件信息。
- 过滤器:
- Filters 枚举类型用于指定过滤器,如
Dirs
(只包含目录)、Files
(只包含文件)、NoDotAndDotDot
(不包含“.”和“..”)、AllEntries
(包含所有文件和目录)等。 - 可以通过按位或操作符(
|
)组合多个过滤器。
- Filters 枚举类型用于指定过滤器,如
- 排序标志:
- SortFlags 枚举类型用于指定排序方式,如
Name
(按名称排序)、Time
(按时间排序)、Size
(按大小排序)等。 - 同样可以通过按位或操作符组合多个排序标志。
- SortFlags 枚举类型用于指定排序方式,如
- 获取目录中的文件和子目录列表:
-
其他功能
- 当前目录操作:
- currentPath():获取应用程序的当前工作目录。
- setCurrent(const QString &path):设置应用程序的当前工作目录。
- 目录遍历:
- 可以使用 entryList() 或 entryInfoList() 结合递归算法遍历目录树。
- 符号链接处理(在某些系统上):
- canonicalPath() 可以解析符号链接,返回规范路径。
- 当前目录操作:
二、使用示例
以下是一个简单的示例,演示如何使用 QDir 列出目录中的文件和子目录:
#include <QCoreApplication>
#include <QDir>
#include <QDebug>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建 QDir 对象并设置路径
QDir dir("/path/to/your/directory");
// 判断目录是否存在
if (dir.exists()) {
qDebug() << "目录存在";
// 获取目录中的文件和子目录列表
QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
foreach (const QString &entry, entries) {
qDebug() << entry;
}
// 获取目录中的文件和子目录的详细信息
QList<QFileInfo> entryInfos = dir.entryInfoList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);
foreach (const QFileInfo &entryInfo, entryInfos) {
qDebug() << "名称:" << entryInfo.fileName() << ",类型:" << (entryInfo.isFile() ? "文件" : "目录")
<< ",大小:" << entryInfo.size() << "字节";
}
} else {
qDebug() << "目录不存在";
}
return a.exec();
}
三、注意事项
- 路径设置:
- 使用 setPath() 设置目录路径时,可以传入绝对路径或相对路径。
- 相对路径是相对于当前工作目录的,可以使用 currentPath() 和 setCurrent() 获取和设置当前工作目录。
- 过滤器和排序标志:
- entryList() 和 entryInfoList() 函数可以使用过滤器和排序标志来筛选和排序目录内容。
- 过滤器可以通过按位或操作符组合多个条件,如
QDir::Files | QDir::Dirs
。 - 排序标志同样可以通过按位或操作符组合多个排序方式,但通常只需要一种排序方式。
- 目录遍历:
- 遍历目录时,可以使用递归算法来遍历目录树。
- 注意处理符号链接,以避免无限递归或访问不存在的路径。
- 跨平台性:
- QDir 提供了与系统无关的目录操作功能,但在某些系统上(如 Windows 和 Unix),目录结构和符号链接的处理可能有所不同。
- 在编写跨平台代码时,需要注意不同系统上的差异。
QDir 是 Qt 框架中用于操作和查询目录的强大工具,它提供了丰富的功能和方法,方便开发者对目录进行各种操作。通过合理使用 QDir,可以简化目录操作的逻辑,提高代码的可读性和可维护性。
4.QFile
QFile 是 Qt 框架中用于文件操作的一个类,它提供了对文件进行读取、写入、复制、移动、重命名和删除等操作的功能。以下是关于 QFile 的详细介绍:
一、主要功能
-
文件打开与关闭
- open(OpenMode mode):以指定的模式打开文件。打开模式包括只读(
QIODevice::ReadOnly
)、只写(QIODevice::WriteOnly
)、读写(QIODevice::ReadWrite
)等,可以使用按位或操作符组合多个模式。 - close():关闭文件。关闭文件后,不能再进行读写操作。
- open(OpenMode mode):以指定的模式打开文件。打开模式包括只读(
-
文件读写
- read(qint64 maxSize):从文件中读取最多
maxSize
个字节的数据。如果maxSize
为负值,则读取到文件末尾。 - readAll():读取文件的全部内容。
- readLine(qint64 maxSize = 0):读取文件中的一行文本。如果
maxSize
大于 0,则最多读取maxSize
个字节;如果maxSize
为 0,则读取一行,直到遇到换行符或文件末尾。 - write(const QByteArray &data):将数据写入文件。
- read(qint64 maxSize):从文件中读取最多
-
文件指针操作
- seek(qint64 pos):将文件指针移动到指定位置
pos
。pos
可以是正数(表示从文件开头算起的字节数)、负数(表示从文件末尾算起的字节数)或零(表示文件开头)。 - pos():返回文件指针的当前位置。
- atEnd():判断文件指针是否已到达文件末尾。
- seek(qint64 pos):将文件指针移动到指定位置
-
文件信息获取
- size():返回文件的大小(以字节为单位)。
- exists():判断文件是否存在。
- isReadable():判断文件是否可读。
- isWritable():判断文件是否可写。
- permissions():返回文件的权限。
-
文件操作
- copy(const QString &newName):将文件复制到指定路径
newName
。 - rename(const QString &newName):重命名文件为
newName
。如果newName
指定的路径与当前文件不在同一目录中,则相当于移动文件。 - remove():删除文件。
- copy(const QString &newName):将文件复制到指定路径
-
错误处理
- error():返回最后发生的错误代码。
- errorString():返回最后发生的错误信息的字符串描述。
二、使用示例
以下是一个简单的示例,演示如何使用 QFile 进行文件的读写操作:
#include <QCoreApplication>
#include <QFile>
#include <QDebug>
#include <QTextStream>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
// 创建 QFile 对象并设置文件名
QFile file("example.txt");
// 以读写模式打开文件
if (!file.open(QIODevice::ReadWrite | QIODevice::Text)) {
qDebug() << "无法打开文件:" << file.errorString();
return -1;
}
// 使用 QTextStream 写入文本到文件
QTextStream out(&file);
out << "Hello, QFile!\n";
// 将文件指针移动到文件开头
file.seek(0);
// 使用 QTextStream 读取文件内容
QTextStream in(&file);
QString line;
while (!in.atEnd()) {
line = in.readLine();
qDebug() << line;
}
// 关闭文件
file.close();
return a.exec();
}
三、注意事项
-
文件模式
- 打开文件时,必须指定正确的模式。例如,如果以只读模式打开文件,则不能进行写入操作。
- 可以使用按位或操作符组合多个模式,如
QIODevice::ReadWrite | QIODevice::Text
。
-
文件指针位置
- 在进行读写操作前,可以使用 seek() 函数移动文件指针到指定位置。
- pos() 函数用于获取当前文件指针的位置,atEnd() 函数用于判断文件指针是否已到达文件末尾。
-
错误处理
- 在进行文件操作时,应检查是否成功。例如,打开文件后应检查
file.open()
的返回值。 - 如果操作失败,可以使用 error() 和 errorString() 函数获取错误信息。
- 在进行文件操作时,应检查是否成功。例如,打开文件后应检查
-
文本模式与二进制模式
- 在打开文件时,可以指定文本模式(
QIODevice::Text
)或二进制模式。 - 在文本模式下,Qt 会自动处理换行符的转换(例如在 Windows 上将
\n
转换为\r\n
)。
- 在打开文件时,可以指定文本模式(
-
文件编码
- 当处理文本文件时,应注意文件的编码格式。可以使用 QTextStream 的 setCodec() 函数设置编码格式。
QFile 是 Qt 框架中用于文件操作的重要类,它提供了丰富的功能和方法,方便开发者对文件进行各种操作。通过合理使用 QFile,可以简化文件操作的逻辑,提高代码的可读性和可维护性。