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

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

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

目录

  • 前言
  • 一、Qt5文件及磁盘处理概述
  • 二、效果实例
  • 三、原码解析
    • 3.1、读文本文件原码
      • main.cpp
    • 3.2、写文本文件原码
      • main.cpp
  • 四、总结

前言

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

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

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

二、效果实例

图一
读取文本文件
新建文本文件输入 Welcome to you! 并另存为ANSI格式,将文件改名为textFile.txt 并放在改工程构建的文件夹内。
Qt5开发从入门到精通——第九篇一节( Qt5 文件及磁盘处理—— 读写文本文件)_第1张图片
图二
写入文本文件,生成的文本文件会在构建文件夹中。
Qt5开发从入门到精通——第九篇一节( Qt5 文件及磁盘处理—— 读写文本文件)_第2张图片

三、原码解析

建立基于控制台工程,使用 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 文件及磁盘处理—— 读写文本文件会在应用程序开发中经常用到的

你可能感兴趣的:(Qt5开发从入门到精通,qt,c++,开发语言,c语言,windows)