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

Qt桌面应用开发 第八天(读写文件 文件编码 文件流)

目录

1.读文件

2.写文件及编码格式

2.1写文件

2.2编码格式

3.文件信息读取

4.文件流

4.1QTextStream

4.2QDataStream


1.读文件

需求:一个pushButton,点击之后可以选择一个txt文件的路径,路径会显示在lineEdit上,txt文件的内容会显示在textEdit上

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    connect(ui->pushButton,&QPushButton::clicked,[=]{
        QString filePath=QFileDialog::getOpenFileName(this,"打开文件","E:\\Qt\\File");

        ui->lineEdit->setText(filePath);

        QFile file(filePath);
        file.open(QIODevice::ReadOnly);

        QByteArray arr;
        arr=file.readAll();
        ui->textEdit->setText(arr);

        file.close();
    });
}

  1. file.open(QIODevice::ReadOnly)——读取方式QIODevice::ReadOnly或QFile::ReadOnly
  2. readAll()——将文件内容一次性全部读取
  3. readLine()——按行读取文件信息,atEnd()判断文件是否读到了尾部,如下:
//arr=file.readAll();
        
while(!file.atEnd())
{
  arr += file.readLine();
}

2.写文件及编码格式

2.1写文件

    QFile file(filePath);
    file.open(QFileDevice::Append);
    file.write("你好");
    file.close();
  1. QFileDevice::WriteOnly会覆盖之前写的内容
  2. QFileDevice::Append会实现追加写入

2.2编码格式

Qt默认支持的编码格式是utf-8。读取其他格式的文件时,需要将文本设置为指定的格式再进行读取,如“gbk”格式。

    //文本的编码方式
    QTextCodec* codec=QTextCodec::codecForName("gbk");
    
    QByteArray arr;
    arr=file.readAll();
    
    //将文本设置为gbk编码格式
    ui->textEdit->setText(codec->toUnicode(arr));

3.文件信息读取

QFileInfo提供了文件名称、位置、后缀名、是否为目录等信息,可以获取文件大小、最后修改时间、读取时间

       QFileInfo info(filePath);
        
        qDebug()<<"文件名称:"<<info.fileName()
                <<"文件路劲:"<<info.filePath()
                <<"后缀名:"<<info.suffix()
                <<"文件大小:"<<info.size();
                    
        qDebug()<<"创建日期:"<<info.created().toString("yyy-MM-dd hh:mm:ss");
                <<"最后修改日期:"<<info.lastModified().toString("yyy-MM-dd hh:mm:ss");

4.文件流

4.1QTextStream

处理文本数据,对Qt的字符串和I/O类进行了优化,可以使用<<或>>读写数据

【写数据】

    QFile file("C:\\Users\\zjx\\Desktop\\1.txt");
    file.open(QFileDevice::WriteOnly);

    QTextStream stream(&file);
    stream<<QString("123")<<123456;

    file.close();

【读数据】

    QFile file("C:\\Users\\zjx\\Desktop\\1.txt");
    file.open(QFileDevice::ReadOnly);
    
    QTextStream readStream(&file);
    QString arr=readStream.readAll();
    
    qDebug()<<arr;
    file.close();

4.2QDataStream

用于处理二进制数据,可以序列化Qt的数据类型为二进制格式,并能从二进制格式中反序列化它们,注意要按照数据类型读取数据

【写文件】

    QFile file("C:\\Users\\zjx\\Desktop\\1.txt");
    file.open(QFileDevice::WriteOnly);

    QDataStream stream(&file);
    stream<<QString("123")<<123456;

    file.close();

原因:文件是二进制的方式写入的

【读文件】

    QFile file("C:\\Users\\zjx\\Desktop\\1.txt");
    file.open(QFileDevice::ReadOnly);

    //声明数据类型,按照数据类型读取数据
    QString str;
    int num;
    QDataStream stream(&file);
    stream>>str>>num;

    qDebug()<<str<<num;
    file.close();


http://www.kler.cn/a/414589.html

相关文章:

  • 第五课 Unity资源导入工作流效率优化(AssetGraph工具)
  • Web day02 Js Vue Ajax
  • Python编程实例-实现环形缓冲(Ring Buffer)
  • Linux中使用ping提示“未知的名称或服务”
  • C语言——指针初阶(一)
  • [MRCTF2020]Transform
  • 路由引入中次优路由和路由环路问题
  • Linux:进程的概念
  • c/c++ 用easyx图形库写一个射击游戏
  • 探索C/C++的奥秘之C++中的继承
  • 【C++】 list接口以及模拟实现
  • 【AI技术赋能有限元分析应用实践】pycharm终端与界面设置导入Abaqus2024自带python开发环境
  • 美畅物联丨如何通过ffmpeg排查视频问题
  • 直播实时美颜平台开发详解:基于视频美颜SDK的技术路径
  • go 和java 编写方式的理解
  • 数据安全与隐私保护:大数据时代的挑战与机遇
  • 华为海思2025届校招笔试面试经验分享
  • 关于Spring基础了解
  • SOLID原则学习【目录篇】
  • Ubuntu20.04下安装VSCode(配置C/C++开发环境)和设备树插件用于嵌入式开发
  • ESP32学习笔记_Peripherals(1)——UART
  • 企业建站高性能的内容管理系统
  • Swagger记录一次生成失败
  • 关于IDE的相关知识之一【使用技巧】
  • python(四)os模块、sys模块
  • git如何给历史提交打标签