QFile文件常用操作

QFile 是 Qt 中用于文件操作的类,提供了读写文件、管理文件路径、检查文件状态等功能。以下是 QFile 的常用操作及其示例代码。


1. 打开和关闭文件

打开文件

cpp
复制
QFile file("example.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    qDebug() << "File opened successfully.";
} else {
    qDebug() << "Failed to open file:" << file.errorString();
}

关闭文件

cpp
复制
file.close();

2. 读取文件内容

读取全部内容

cpp
复制
QFile file("example.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
    QByteArray data = file.readAll();
    qDebug() << "File content:" << data;
    file.close();
}

逐行读取

cpp
复制
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. 写入文件内容

写入字符串

cpp
复制
QFile file("example.txt");
if (file.open(QIODevice::WriteOnly | QIODevice::Text)) {
    QTextStream out(&file);
    out << "Hello, World!";
    file.close();
}

追加内容

cpp
复制
QFile file("example.txt");
if (file.open(QIODevice::Append | QIODevice::Text)) {
    QTextStream out(&file);
    out << "\nAppended text.";
    file.close();
}

4. 检查文件状态

检查文件是否存在

cpp
复制
QFile file("example.txt");
if (file.exists()) {
    qDebug() << "File exists.";
} else {
    qDebug() << "File does not exist.";
}

获取文件大小

cpp
复制
QFile file("example.txt");
if (file.exists()) {
    qint64 size = file.size();
    qDebug() << "File size:" << size << "bytes";
}

检查文件权限

cpp
复制
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. 文件路径操作

获取文件名

cpp
复制
QFile file("/path/to/example.txt");
QString fileName = file.fileName();
qDebug() << "File name:" << fileName;

获取文件路径

cpp
复制
QFileInfo fileInfo("/path/to/example.txt");
QString filePath = fileInfo.absolutePath();
qDebug() << "File path:" << filePath;

获取文件扩展名

cpp
复制
QFileInfo fileInfo("/path/to/example.txt");
QString suffix = fileInfo.suffix();
qDebug() << "File suffix:" << suffix;

6. 文件重命名和删除

重命名文件

cpp
复制
QFile file("example.txt");
if (file.rename("newname.txt")) {
    qDebug() << "File renamed successfully.";
} else {
    qDebug() << "Failed to rename file:" << file.errorString();
}

删除文件

cpp
复制
QFile file("example.txt");
if (file.remove()) {
    qDebug() << "File removed successfully.";
} else {
    qDebug() << "Failed to remove file:" << file.errorString();
}

7. 文件复制

复制文件

cpp
复制
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. 文件权限设置

设置文件权限

cpp
复制
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. 文件错误处理

获取错误信息

cpp
复制
QFile file("nonexistent.txt");
if (!file.open(QIODevice::ReadOnly)) {
    qDebug() << "Error:" << file.errorString();
}

10. 使用 QTextStream 进行高级读写

写入格式化数据

cpp
复制
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();
}

读取格式化数据

cpp
复制
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 任务。

posted @ 2025-02-26 11:35  远方是什么样子  阅读(247)  评论(0)    收藏  举报