QT 文件

QT(11)文件

QFile 是 Qt 中用于文件操作的类,提供了对文件的读写功能。

它是一个方便的文件操作接口,可以用于打开、读取、写入和关闭文件。

主要功能

打开文件:
使用 open(QIODevice::OpenMode mode) 方法打开文件,mode 参数指定了文件的打开模式(如只读、只写、读写等)。

读取文件:
使用 read(char *data, qint64 maxSize) 或 readAll() 方法读取文件内容。
使用 readLine(char *data, qint64 maxSize) 方法读取一行内容。

写入文件:
使用 write(const char *data, qint64 maxSize) 或 write(const QByteArray &data) 方法写入数据。

关闭文件:
使用 close() 方法关闭文件。

文件信息:
使用 size() 方法获取文件大小。
使用 fileName() 方法获取文件名。

类成员

// QFile 类是 Qt 框架中用于文件操作的重要类。以下是 QFile 类的所有成员函数和枚举类型的详细列表:

// 枚举类型
enum QFile::FileError {
    NoError,          // 没有错误
    ReadError,        // 读取错误
    WriteError,       // 写入错误
    FatalError,       // 致命错误
    ResourceError,    // 资源错误
    OpenError,        // 打开错误
    AbortError,       // 中止错误
    TimeOutError,     // 超时错误
    UnspecifiedError, // 未指定错误
    RemoveError,      // 删除错误
    RenameError,      // 重命名错误
    PositionError,    // 位置错误
    ResizeError,      // 调整大小错误
    PermissionsError, // 权限错误
    CopyError         // 复制错误
};

enum QFile::FileHandleFlag {
    AutoCloseHandle,  // 自动关闭文件句柄
    DontCloseHandle   // 不关闭文件句柄
};

enum QFile::MemoryMapFlags {
    NoOptions         // 无选项
};

// 构造函数
QFile();
QFile(const QString &name);
QFile(QObject *parent);
QFile(const QString &name, QObject *parent);

// 析构函数
~QFile();

// 公共成员函数
bool atEnd() const; // 检查文件是否在末尾
bool copy(const QString &newName); // 复制文件到新名称
bool exists() const; // 检查文件是否存在
bool flush(); // 刷新文件缓冲区
int handle() const; // 返回文件句柄
bool isOpen() const; // 检查文件是否打开
bool isReadable() const; // 检查文件是否可读
bool isSequential() const; // 检查文件是否是顺序访问的
bool isTextModeEnabled() const; // 检查文件是否在文本模式下打开
bool isWritable() const; // 检查文件是否可写
bool link(const QString &linkName); // 创建文件的链接
bool open(OpenMode mode); // 以指定模式打开文件
bool open(FILE *f, OpenMode mode, FileHandleFlags handleFlags = DontCloseHandle); // 使用现有文件指针打开文件
bool open(int fd, OpenMode mode, FileHandleFlags handleFlags = DontCloseHandle); // 使用现有文件描述符打开文件
qint64 pos() const; // 返回文件当前位置
bool remove(); // 删除文件
bool rename(const QString &newName); // 重命名文件
bool resize(qint64 sz); // 调整文件大小
void setFileName(const QString &name); // 设置文件名
void setTextModeEnabled(bool enabled); // 设置文件的文本模式
qint64 size() const; // 返回文件大小
bool unmap(uchar *address); // 解除内存映射
uchar *map(qint64 offset, qint64 size, MemoryMapFlags flags = NoOptions); // 内存映射文件

下面是一个示例代码:

#include "mainwindow.h"

#include <QApplication>
#include <QFile>
#include <QDir>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //设置当前路径
    //QDir::setCurrent(QCoreApplication::applicationDirPath());
    QFile qfs("A://QT_WORK//q70//a.txt");

    //打开文件
    if(qfs.open(QIODevice::ReadWrite | QIODevice::Text))
    {
        //读取文件内容
        QTextStream in(&qfs);//读取文件流,文本流最大读4G
        QString str = in.readAll();//读取全部内容
        qDebug() << str; // qqqqqqqq\n

    } else{
        qDebug() << "文件打开失败";
    }


    //写入文件
    qfs.write("hello world");
    qfs.write("hello world\n");
    qfs.write("hello world\n");

    //重置文件指针到开头
    qfs.seek(0);

    char *p = new char[200]; //分配内存
    //读取一行
    //@param p 指向存放读取内容的内存地址
    //@param maxlen 最大读取长度
    //@return 返回读取的长度
    qint64 len= qfs.readLine(p, 200);

    while((len!=0)&&(len!= -1)){//读取到文件末尾时len为-1
        qDebug() << QString(p); //打印读取的内容
        len= qfs.readLine(p, 200);
    }
    qfs.close();

    //二进制写入文件
    QFile qfs2("A://QT_WORK//q70//b.dat");
    //二进制打开文件
    if(!qfs2.open(QIODevice::ReadWrite ))
    {
        qDebug() << "文件打开失败";
    }

    qint32 qnumber[3]={1,2,3};
    //将数组转换为QByteArray
    QByteArray qba = QByteArray((char*)qnumber, sizeof(qnumber));

    //写入二进制数据
    qfs2.write(qba);

    //读取二进制数据
     qfs2.seek(0); //设置文件指针到开头
     QByteArray q = qfs2.readAll(); //读取全部数据
     //二进制输出
     qDebug() << q; //打印读取的字节数

     //转换为int数组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可能只会写BUG

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值