• Qt5开发从入门到精通——第九篇一节( Qt5 文件及磁盘处理—— 读写文本文件)


    CSDN话题挑战赛第2期
    参赛话题:学习笔记

    欢迎小伙伴的点评✨✨,相互学习c/c++应用开发。🍳🍳🍳
    博主🧑🧑 本着开源的精神交流Qt开发的经验、将持续更新续章,为社区贡献博主自身的开源精神👩‍🚀

    前言

    本章节会给大家带来Qt5文件及磁盘处理概述及读写文本文件的开发实例详解。

    一、Qt5文件及磁盘处理概述

    Qt 提供了 QFile 类用于进行文件操作。 QFile 类提供了读写文件的接口,可以读写文本文件、二进制文件和 Qt 的资源文件。
    处理文本文件和二进制文件,可以使用 QTextStream 类和 QDataStream 类。处理临时文件可以使用 QTemporaryFile, 获取文件信息可以使用 QFilelnfo, 处理目录可以使用 QDir, 监视文件和目录变化可以使用 QFileSystemWatcher 。
    读写文本文件的方法通常有两种:一种是直接利用传统的 QFile 类方法;另一种是利用更为方便的 QTextStream 类方法。

    二、效果实例

    图一
    读取文本文件
    新建文本文件输入 Welcome to you! 并另存为ANSI格式,将文件改名为textFile.txt 并放在改工程构建的文件夹内。
    在这里插入图片描述
    图二
    写入文本文件,生成的文本文件会在构建文件夹中。
    在这里插入图片描述

    三、原码解析

    建立基于控制台工程,使用 QFile 类读写文本文件
    (I) 建立一个工程。选择“文件" – “新建文件或项目…”菜单项,在弹出的对话框中选择”项目”组下的 “Application” – " Qt Console Application” 选项,单击 “Choose…”按钮。
    (2) 在弹出的对话框中对该工程进行命名并选择保存工程的路径,这里将工程命名为"TextFile”, 单击“下一步”按钮,再次单击“下一步”按钮,最后单击“完成”按钮,完成该文件工程的建立。

    1. QTextStream 的格式化函数

    qSetFieldWidth(int width):设置字段宽度
    qSetPadChar(QChar ch):设置填充字符
    qSetRealNumberPercision(int precision):设置实数精度

    2. QTextStream 的流操作符

    bin :设置读写的整数为二进制数
    oct :设置读写的整数为八进制数
    dec : 设置读写的整数为十进制数
    hex :设置读写的整数为十六进制数
    showbase :强制显示进制前缀,如十六进制 (0x) 、八进制 (0) 、二进制 (0b)
    forcesign :强制显示符号(+, -)
    forcepoint :强制显示小数点
    noshowbase :不显示进制前缀
    noforces1gn :不显示符号
    uppercasebase: 显示大写的进制前缀
    lowercasebase: 显示小写的进制前缀
    uppercasedigits: 用大写字母表示
    lowercasedigits: 用小写字母表示
    fixed: 用固定小数点表示
    scientific: 用科学计数法表示
    left : 左对齐
    right: 右对齐
    center: 居中
    endl: 换行
    flush: 清除缓冲

    3.1、读文本文件原码

    main.cpp

    #include 
    #include 
    #include 
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QFile file("textFile.txt"); /*打开一个文件有两种方式。一种方式是在构造函数中指定文
    件名;另一种方式是使用 setFileName() 函数设置文件名。*/
        if (file. open (QIODevice::ReadOnly))/*打开文件使用 open() 函数,关闭文件使用 close()
    函数。此处的 open()函数以只读方式打开文件,只读方式参数为 QIODevice:: ReadOnly, 只写方
    式参数为 QIODevice::WriteOnly, 读写参数为 QIODevice:: ReadWrite 。*/
        {
            char buffer[2048];
            qint64 lineLen = file.readLine(buffer,sizeof(buffer));/*在 QFile 中可以使用从 QIODevice
    中继承的 readLine()函数读取文本文件的一行。*/
            if(lineLen!=-1)/*如果读取成功,则 readLine()函数返回实际读取的
    字节数;如果读取失败,则返回 "-1" 。*/
            {
                qDebug ()<<buffer;
            }
        }
        return a.exec();
    }
    
    

    3.2、写文本文件原码

    main.cpp

    #include 
    #include 
    #include 
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        QFile data("data.txt");
      if (data. open (QFile::WriteOnly|QFile::Truncate)) /*参数 QFile::Truncate 表示将原来文件
    中的内容清空。输出时将格式设为左对齐,占 10 个字符位置。*/
      {
          QTextStream out(&data);
          out<<QObject::tr("")<<qSetFieldWidth(10)<<left<< endl;
          out<<QObject::tr("score:")<<qSetFieldWidth(10)<<left<<90<< endl; /*用户使用格式化函
    数和流操作符设置需要的输出格式。其中, qSetFieldWidth()函数是设置字段宽度的格式化函数。*/
          out<<QObject::tr("score:")<<qSetFieldWidth(10)<<left<<90<< endl;
          out<<QObject::tr("score:")<<qSetFieldWidth(10)<<left<<90<< endl;
          out<<QObject::tr("score:")<<qSetFieldWidth(10)<<left<<90<< endl;
          out<<QObject::tr("score:")<<qSetFieldWidth(10)<<left<<90<< endl;
    
      }
    
        return a.exec();
    }
    
    

    四、总结

    Qt5 文件及磁盘处理—— 读写文本文件会在应用程序开发中经常用到的

  • 相关阅读:
    3DE船舶与海洋工程优化海运生产—规划您的船舶工程建造 | 达索系统百世慧®
    Linux[高级管理]——使用源码包编译安装Apache网站
    JVM类加载及双亲委派机制
    对比不同测量矩阵的重构概率
    【渗透测试】Weblogic系列漏洞
    (39、40)分布式
    UE5C++学习(二)--- 角色简单连击
    多个excel合并
    【从入门到起飞】JavaSE—IO工具包(Commons-io,Hutool) (2)
    【无标题】
  • 原文地址:https://blog.csdn.net/weixin_44759598/article/details/127087405