Qt的QFile类提供了一个用于访问文件的接口。它支持文件的读写操作,并允许对文件进行顺序或随机访问。QFile对文件系统进行抽象,提供了一个简单的API来执行常见的文件操作,如打开文件、读写数据、关闭文件等。
以下是一些QFile的基本使用示例,涵盖了不同的使用场景。
示例 1: 写入文件
#include <QFile>
#include <QTextStream>
#include <QDebug>
int main()
{
QFile file("example.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) {
qDebug() << "Cannot open file for writing:" << file.errorString();
return -1;
}
QTextStream out(&file);
out << "Hello, Qt!n";
out << "Hello, 天恩软件小杨哥!n";
// 关闭文件会自动发生,但也可以显式调用file.close();
qDebug() << "File written successfully";
return 0;
}
示例 2: 读取文件
#include <QFile>
#include <QTextStream>
#include <QDebug>
int main()
{
QFile file("example.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "Cannot open file for reading:" << file.errorString();
return -1;
}
QTextStream in(&file);
QString line;
while (!in.atEnd()) {
line = in.readLine();
qDebug() << line;
}
file.close(); // 显式关闭文件
return 0;
}
示例 3: 追加内容到文件
#include <QFile>
#include <QTextStream>
#include <QDebug>
int main()
{
QFile file("example.txt");
if (!file.open(QIODevice::Append | QIODevice::Text)) {
qDebug() << "Cannot open file for appending:" << file.errorString();
return -1;
}
QTextStream out(&file);
out << "Another line.n";
file.close(); // 显式关闭文件
return 0;
}
示例 4: 写入二进制文件
#include <QFile>
#include <QDataStream>
#include <QDebug>
struct Data {
int id;
QString name;
};
int main()
{
QFile file("data.bin");
if (!file.open(QIODevice::WriteOnly)) {
qDebug() << "Cannot open file for writing:" << file.errorString();
return -1;
}
QDataStream out(&file);
Data data;
data.id = 1;
data.name = "Qt";
out << data.id;
out << data.name;
file.close();
return 0;
}
示例 5: 读取二进制文件
#include <QFile>
#include <QDataStream>
#include <QDebug>
struct Data {
int id;
QString name;
};
int main()
{
QFile file("data.bin");
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Cannot open file for reading:" << file.errorString();
return -1;
}
QDataStream in(&file);
Data data;
in >> data.id;
in >> data.name;
qDebug() << "ID:" << data.id << ", Name:" << data.name;
file.close();
return 0;
}
示例 6: 复制文件
#include <QFile>
QString sourcePath = "source.txt";
QString targetPath = "target.txt";
QFile::copy(sourcdPath, targetPath);
示例 7: 检查文件是否存在及文件权限
#include <QFile>
#include <QDebug>
QString filePath = "example.txt";
QFile file(filePath);
if (file.exists()) {
qDebug() << "File exists.";
if (file.isReadable()) {
qDebug() << "File is readable.";
}
if (file.isWritable()) {
qDebug() << "File is writable.";
}
} else {
qDebug() << "File does not exist.";
}
-End-
上一条:Aspen plus 模拟废气输送管线阻力
下一条:Mastercam 2025 版本中简化工作流程的 5 个重要功能提升