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

二十七、读写文件

二十七、读写文件

27.1 文件类QFile

#include <QCoreApplication>#include<QFile>
#include<QDebug>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QFile file("D:/main.txt");if(!file.open(QIODevice::WriteOnly | QIODevice::Text))qDebug()<<"打开文件失败";elseqDebug()<<"打开文件成功";file.write("Qt编程");file.close();if(!file.open(QIODevice::ReadOnly | QIODevice::Text))qDebug()<<"打开文件失败";elseqDebug()<<"打开文件成功";char *str=new char[200];qint64 count=file.readLine(str,200);while((count!=0) && (count!=-1)){qDebug()<<str;count=file.readLine(str,200);}file.close();return a.exec();
}

这段代码是一个简单的文件读写示例,主要包括以下几个步骤:
1. 创建一个QFile对象,指定文件路径为D:/main.txt。
2. 以只写和文本模式打开文件,如果打开失败则输出“打开文件失败”,否则输出“打开文件成功”。
3. 向文件中写入字符串“Qt编程”。
4. 关闭文件。
5. 以只读和文本模式打开文件,如果打开失败则输出“打开文件失败”,否则输出“打开文件成功”。
6. 创建一个长度为200的字符数组,使用file.readLine()方法读取文件中的一行数据,将数据存储到字符数组中,并返回读取的字节数。
7. 循环读取文件中的每一行数据,直到读取到文件末尾或者读取失败。
8. 输出读取到的每一行数据。
9. 关闭文件。
 

qint64 QIODevice::readLine(char *data, qint64 maxSize):

该函数从设备读取一行ASCII字符(最大maxSize - 1字节),将字符存储在data中,并返回读取的字节数。如果一行无法读取但没有发生错误,则此函数返回0。如果发生错误,此函数返回可读取内容的长度,如果没有读取,则返回-1。
结束的'\0'字节总是附加到data后,因此maxSize必须大于1。
一直读取数据,直到满足以下条件之一:
读取第一个'\n'字符。
maxSize -读取1个字节。
设备数据结束检测 

27.2 读写二进制文件QDataStream和QTextStream

#include <QCoreApplication>#include<QFile>
#include<QDebug>
#include<QTextStream>
#include<QDataStream>
#include<QString>int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);QFile file("D:/main.txt");if(!file.open(QIODevice::WriteOnly | QIODevice::Text))qDebug()<<"打开文件失败";elseqDebug()<<"打开文件成功";QTextStream textStreamWrite(&file);textStreamWrite<<(QString)"Qt开发编程";file.close();if(!file.open(QIODevice::ReadOnly | QIODevice::Text))qDebug()<<"打开失败";elseqDebug()<<"打开成功";QTextStream textStreamRead(&file);while(!textStreamRead.atEnd()){QString str;textStreamRead>>str;qDebug()<<str;}file.close();return a.exec();
}

这段代码主要是演示了如何使用Qt库中的QFile、QTextStream和QDataStream类来读写文件。具体来说,代码首先创建一个名为main.txt的文件,并向其中写入一行文本“Qt开发编程”,然后再次打开该文件并读取其中的文本内容,并将其输出到控制台。代码中使用了QTextStream类来进行文本的读写操作,同时使用了QIODevice::ReadOnly和QIODevice::WriteOnly来指定文件的打开模式。

bool QTextStream::atEnd() const:

如果没有更多的数据要从QTextStream中读取,则返回true;否则返回false。这与调用QIODevice::atEnd()类似,但不相同,因为QTextStream也会考虑其内部Unicode缓冲区。 

http://www.lryc.cn/news/261402.html

相关文章:

  • flutter 代码混淆
  • 05 Vue中常用的指令
  • Mr. Cappuccino的第67杯咖啡——MacOS通过PD安装Win11
  • 【云原生kubernets】Service 的功能与应用
  • docker安装Prometheus
  • 了解 Flutter 3.16 功能更新
  • python之画动态图 gif效果图
  • 【JavaWeb】用注解代替配置文件
  • SpringBoot 3.0 升级之 Swagger 升级
  • AR游戏开发
  • Easy Excel生成复杂下Excel模板(下拉框)给用户下载
  • 基于EasyExcel的数据导入导出
  • 电子学会C/C++编程等级考试2021年06月(六级)真题解析
  • 智能优化算法应用:基于供需算法3D无线传感器网络(WSN)覆盖优化 - 附代码
  • vue3 setup语法糖写法基本教程
  • 利用两个指针的差值求字符串长度
  • ping命令的工作原理
  • 谷歌的开源供应链安全
  • 分发饼干(贪心算法)
  • 基于ssm旅游景点管理系统设计论文
  • 用go封装一下封禁功能
  • loki 如何格式化日志
  • 在Linux上使用mysqldump备份MySQL数据库的详细步骤
  • 神经网络基础
  • 你好,C++(2)1.3 C++世界版图1.4 如何学好C++
  • Ceph入门到精通- smartctl -l error检查硬盘指标
  • 【LeetCode刷题】-- 161.相隔为1的编辑距离
  • SQL进阶理论篇(八):SQL查询的IO成本
  • 宝塔PostgreSQL设置数据库远程访问
  • 蓝牙协议栈学习笔记