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

这篇博客介绍了Qt5中使用QFile和QTextStream进行文件读写的方法,包括读取文本文件、写入文本文件的实例代码,并详细解析了代码实现过程。通过示例展示了如何创建、打开文件,以及设置文本流的格式化功能。此外,还简要概述了Qt5中其他与文件和磁盘操作相关的类,如QTemporaryFile、QFileInfo和QDir。
摘要由CSDN通过智能技术生成

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 <QCoreApplication>
#include <QFile>
#include <QtDebug>

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 <QCoreApplication>
#include <QFile>
#include <QTextStream>
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 文件及磁盘处理—— 读写文本文件会在应用程序开发中经常用到的

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

东.'

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

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

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

打赏作者

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

抵扣说明:

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

余额充值