当前位置: 首页 > news >正文

QT——文件IO

QFile 类

构造函数

QFile() 无参构造
    仅仅构建一个QFile 对象,不设定文件名

QFile(文件名)
    构建一个QFile对象的同时,设定文件名
    但是注意,仅仅设定文件名,并不会打开该文件

设定文件名

QFile file
file.setFileName(文件名)
并不会打开

打开文件

file.open(打开模式)

 

文件写

qint64 write(const char *data, qint64 maxSize)

    file.write(数据,数据长度)//将data,最多maxSize个字节,写入file代表的文件中 

qint64 write(const char *data)

    file.write(数据)//将data,到结束符为止,写入file代表的文件中 

 qint64 write(const QByteArray &byteArray)

    QByteArray本质是c语言的字符数组,做一段内存来管理

我们的数据一般是一个 QString 对象
    so要将一个 QString 对象转换成 QByteArray 对象:
    
    QString  str = "hello"//QString,有toLocal8Bit() :将QString转换成 QByteArray
    QByteArray   qarr = str.toLocal8Bit();

class Widget : public QWidget
{
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void save_data(const QString &filename,const QString &data);

private:
    Ui::Widget *ui;
    QFile file;
};


Widget::~Widget()
{
    QString name=ui->lineEdit->text();
    save_data("D:/name.text",name);
    delete ui;
}

void Widget::save_data(const QString &filename, const QString &data)
{
    file.setFileName(filename);
    file.open(QFile::WriteOnly);

    file.write(data.toLocal8Bit());
    file.close();
}

文件读 

qint64 read(char *data, qint64 maxSize)

    char buf[64] = {0}
    file.read(buf,64)//从file文件中读取最多64个字节的数据,并且将读取到的数据写入buf中
    返回读取到的数据的字节数

QByteArray read(qint64 maxSize)

    QByteArray   qarr = file.read(64)// 从file文件中,读取最多64个字节的数据,并且将读取到的数据,构建成一个QByteArray对象后返回

将  QByteArray 数据,转换成 QString 数据
        1:在QByteArray 寻找,返回值是 QString,函数名是toXXXX,形参没有的函数
        2:在QString的构造函数,寻找参数为 QByteArray 的构造函数
            不支持中文
        3:在QString的静态方法,寻找返回值为 QString,参数是 QByteArray的函数
           找到 fromLocal8Bit(),支持中文

QByteArray    readAll()

    QByteArray arr = file.readAll()// 读取文件中的全部数据
//将读取到的数据,构建成 QByteArray 后返回

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QString name=load_data("D:name.text");
    ui->lineEdit->setText(name);
}

QString Widget::load_data(const QString &filename)
{
    file.setFileName(filename);
    file.open(QFile::ReadOnly);

    QByteArray barr=file.readAll();
    QString str=QString::fromLocal8Bit(barr);
    file.close();
    return str;
}

相关文章:

  • Express + MongoDB 实现视频点播
  • Linux文档编辑相关命令详解
  • 初识神经网络的分类问题
  • GAN、Diffusion与美颜SDK:AI如何驱动人脸美型API进化?
  • OpenGL ES -> GLSurfaceView纹理贴图
  • 坐标变换介绍与机器人九点标定的原理
  • 【JavaEE进阶】图书管理系统 - 柒
  • PAT 甲级 1107 并查集
  • 国产编辑器EverEdit - 超多样式设置
  • go 分布式redis锁的实现方式
  • AI是否能真正理解人类情感?从语音助手到情感机器人
  • C 语 言 --- 经 典 习 题 2
  • 第一次执行GameObject.Instantiate时可能出现明显的卡顿 如何解决该问题?
  • TCP/IP四层模型:从入门到精通
  • NVIDIA(英伟达) GPU 芯片架构发展史
  • <Rust><iced>基于rust使用iced构建GUI实例:图片浏览器
  • Spark核心之02:RDD、算子分类、常用算子
  • 设计模式:记录所有设计模式方便后续复习
  • 小白向:如何使用dify官方市场“ECharts图表生成”工具插件——dify入门案例
  • Sat- nerf深度损失
  • 850亿元!2025年中央金融机构注资特别国债(一期)拟第一次续发行
  • 王受文已任全国工商联党组成员
  • 梵蒂冈选出新教皇,外交部:望新教皇推动中梵关系不断改善
  • 读图|展现城市品格,上海城市影像走进南美
  • 暴利之下:宠物殡葬行业的冰与火之歌
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地