QFile文件常用操作
QFile 是 Qt 中用于文件操作的类,提供了读写文件、管理文件路径、检查文件状态等功能。以下是 QFile 的常用操作及其示例代码。
1. 打开和关闭文件
打开文件
QFile file("example.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
qDebug() << "File opened successfully.";
} else {
qDebug() << "Failed to open file:" << file.errorString();
}
关闭文件
file.close();
2. 读取文件内容
读取全部内容
QFile file("example.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QByteArray data = file.readAll();
qDebug() << "File content:" << data;
file.close();
}
逐行读取
QFile file("example.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
while (!in.atEnd()) {
QString line = in.readLine();
qDebug() << line;
}
file.close();
}
3. 写入文件内容
写入字符串
QFile file("example.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << "Hello, World!";
file.close();
}
追加内容
QFile file("example.txt");
if (file.open(QIODevice::Append | QIODevice::Text)) {
QTextStream out(&file);
out << "\nAppended text.";
file.close();
}
4. 检查文件状态
检查文件是否存在
QFile file("example.txt");
if (file.exists()) {
qDebug() << "File exists.";
} else {
qDebug() << "File does not exist.";
}
获取文件大小
QFile file("example.txt");
if (file.exists()) {
qint64 size = file.size();
qDebug() << "File size:" << size << "bytes";
}
检查文件权限
QFile file("example.txt");
if (file.permissions() & QFile::ReadUser) {
qDebug() << "File is readable by the user.";
}
if (file.permissions() & QFile::WriteUser) {
qDebug() << "File is writable by the user.";
}
5. 文件路径操作
获取文件名
QFile file("/path/to/example.txt");
QString fileName = file.fileName();
qDebug() << "File name:" << fileName;
获取文件路径
QFileInfo fileInfo("/path/to/example.txt");
QString filePath = fileInfo.absolutePath();
qDebug() << "File path:" << filePath;
获取文件扩展名
QFileInfo fileInfo("/path/to/example.txt");
QString suffix = fileInfo.suffix();
qDebug() << "File suffix:" << suffix;
6. 文件重命名和删除
重命名文件
QFile file("example.txt");
if (file.rename("newname.txt")) {
qDebug() << "File renamed successfully.";
} else {
qDebug() << "Failed to rename file:" << file.errorString();
}
删除文件
QFile file("example.txt");
if (file.remove()) {
qDebug() << "File removed successfully.";
} else {
qDebug() << "Failed to remove file:" << file.errorString();
}
7. 文件复制
复制文件
QFile srcFile("example.txt");
QFile destFile("copy.txt");
if (srcFile.copy(destFile.fileName())) {
qDebug() << "File copied successfully.";
} else {
qDebug() << "Failed to copy file:" << srcFile.errorString();
}
8. 文件权限设置
设置文件权限
QFile file("example.txt");
if (file.setPermissions(QFile::ReadOwner | QFile::WriteOwner)) {
qDebug() << "File permissions set successfully.";
} else {
qDebug() << "Failed to set file permissions:" << file.errorString();
}
9. 文件错误处理
获取错误信息
QFile file("nonexistent.txt");
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Error:" << file.errorString();
}
10. 使用 QTextStream 进行高级读写
写入格式化数据
QFile file("data.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
QTextStream out(&file);
out << "Name: " << "Alice" << Qt::endl;
out << "Age: " << 25 << Qt::endl;
file.close();
}
读取格式化数据
QFile file("data.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream in(&file);
QString name;
int age;
in >> name >> age;
qDebug() << "Name:" << name << ", Age:" << age;
file.close();
}
总结
QFile 提供了丰富的功能来操作文件,包括打开、关闭、读取、写入、检查状态、路径操作、重命名、删除、复制、权限设置和错误处理等。掌握这些操作可以轻松处理文件 I/O 任务。
浙公网安备 33010602011771号