首页>软件资讯>常见问题

常见问题

Qt各种文件操作示例

发布时间:2024-08-20 11:40:12人气:335


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 个重要功能提升