QFile文件读写

article/2025/8/23 15:16:46

文章目录

    • 简介
    • 常用api
    • QFile类读写文件
    • QFile+QTextStream读写文件

简介

QFile类提供了一个读取和写入文件的接口,一个读写文本、二进制文件和资源的I/O设备。
QFile读写文件的两种方式:
1.QFile可以单独使用。
2.QFile与QTextStream或QDataStream一起使用。
注意:不管操作系统是什么,QFile都希望文件分隔符是’/‘。不支持使用其他分隔符(例如’')。

常用api

设置文件路径名,可以通过构造函数传参

QFile(const QString &name)

也可以通过以下函数

void setFileName(const QString &name)

使用 QFile 读写文件之前必须先打开文件

bool open(FILE *fh, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)
bool open(int fd, QIODevice::OpenMode mode, QFileDevice::FileHandleFlags handleFlags = DontCloseHandle)

QFile常用打开文件的方式
QIODevice::ReadOnly:只能对文件进行读操作
QIODevice::WriteOnly:只能对文件进行写操作,如果目标文件不存在,会自行创建一个新文件
QIODevice::ReadWrite : 能对文件进行读和写操作
QIODevice::Append : 以追加模式打开设备,以便将所有数据写到文件的末尾。
QIODevice::Truncate:以重写模式打开,写入的数据会将原有数据全部清除。注意,此打开方式不能单独使用,通常会和 ReadOnly 或 WriteOnly 搭配。
QIODevice::Text:读取时,行末终止符被翻译为’\n’。在写入时,行末终止符被转换为本地编码,例如Win32的’\r\n’。
根据需要,文件的打开方式可以一次性指定多个值,值和值之间用|分割。比如:
QIODevice::WriteOnly | QIODevice::Text:表示只允许对文件进行写操作,将数据写入文件时,会将行尾结束符转换为本地格式;

文件中一次性最多读取 maxSize 个字节,然后返回读取到的字节。

qint64 read(char *data, qint64 maxSize)

读取文件中所有的数据。

QByteArray QIODevice::readAll()

每次从文件中读取一行数据或者读取最多 maxSize-1 个字节,存储到 data 中。返回实际读取到的字节数。

qint64 readLine(char *data, qint64 maxlen);

从文件中读取一行,但不超过maxSize字符,并以字节数组的形式返回结果。

QByteArray readLine(qint64 maxlen = 0);

写入数据,返回实际写入的字节数

qint64 write(const char *data)
qint64 write(const QByteArray &byteArray)

当前由fileName()指定的文件重命名为newName。如果成功返回true;否则返回false。

bool rename(const QString &newName)

将当前由fileName()指定的文件复制到名为newName的文件。如果成功返回true;否则返回false。

bool copy(const QString &newName)

移除当前文件。如果成功返回true;否则返回false。

bool remove()

QFile类读写文件

void byQFile()
{//创建 QFile 对象,指定文件的路径QFile file(QCoreApplication::applicationDirPath()+"/ini.txt");//尝试打开文件,如果文件不存在将会自行创建一个if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){qDebug()<<"文件打开失败";}//对文件进行写操作file.write(QString(QStringLiteral("春眠不觉晓\n")).toStdString().c_str());file.write(QString(QStringLiteral("处处闻啼鸟\n")).toStdString().c_str());file.write(QString(QStringLiteral("夜来风雨声\n")).toStdString().c_str());file.write(QString(QStringLiteral("花落知多少\n")).toStdString().c_str());//关闭文件file.close();//打开文件if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){qDebug()<<"文件打开失败";}//对文件进行读操作//每次都去文件中的一行,然后输出读取到的字节数组while (!file.atEnd()) {QByteArray line = file.readLine();qDebug()<<line.toStdString().c_str();}file.close();
}

打印输出
在这里插入图片描述

QFile+QTextStream读写文件

QTextStream 类常用的一些方法

QTextStream构造函数,需要传入QFile对象。

QTextStream(QIODevice *device)

从文件中读取所有内容,读取内容已QString 字符串返回

QString readAll()	

读取一行,如果手动指定 maxlen 的值,则最多读取 maxlen 个字符,读取内容已QString 字符串返回

QString readLine(qint64 maxlen = 0)	

QTextStream还提供了格式化的方法。

//设置每份数据占用的位置宽度为 width。
void setFieldWidth(int width)
//设置对齐方式
void setFieldAlignment(QTextStream::FieldAlignment mode)
//设置将数字写入文件时,带上正负号。
void setNumberFlags(numberFlags() | ForceSign)	
void byQFileAndStream()
{//创建 QFile 对象,指定文件的路径QFile file(QCoreApplication::applicationDirPath()+"/ini.txt");//尝试打开文件,如果文件不存在将会自行创建一个if(!file.open(QIODevice::WriteOnly|QIODevice::Text)){qDebug()<<"文件打开失败";}QTextStream in(&file);//向文件中写入两行字符串in << QString(QStringLiteral("春眠不觉晓\n"))\<< QString(QStringLiteral("处处闻啼鸟\n"))\<< QString(QStringLiteral("夜来风雨声\n"))\<< QString(QStringLiteral("花落知多少\n"));//关闭文件file.close();//对文件进行读操作if(!file.open(QIODevice::ReadOnly|QIODevice::Text)){qDebug()<<"文件打开失败";}QTextStream out(&file);//直至读取结束while(!out.atEnd()){QString str;//从文件中读取一个字符串out >> str;qDebug() << str;}file.close();
}

在这里插入图片描述


http://chatgpt.dhexx.cn/article/srj6tsyF.shtml

相关文章

Qt之Qfile读取文件操作

文件系统&#xff1a;   文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库&#xff0c;提供了跨平台的文件操作能力。Qt 通过QIODevice提供了对 I/O 设备的抽象&#xff0c;这些设备具有读写字节块的能力。下面是 I/O 设备的类图&#xff08;Qt5&#xff09;&#x…

常用性能测试工具的比较

目录 性能测试的重要性针对接口的性能测试 性能测试基准接口性能测试的主要指标abenchjMeterKelude性能脚本各种监控工具 参考总结 性能测试的重要性 众所周知性能测试在软件测试中占有举足轻重的作用&#xff0c;尤其是对于互联网产品这种具有大用户量&#xff0c;大数据量&a…

推荐几款常用的性能测试工具

“ 对内容不感兴趣拉到最后领取今天的外卖红包。” 常用的性能测试工具 对于开发人员来说&#xff0c;首选是一些开源免费的性能&#xff08;压力&#xff09;测试软件&#xff0c;例如 ab&#xff08;ApacheBench&#xff09;、JMeter 等&#xff1b;对于专业的测试团队来说&…

10款主流的软件测试工具,你用过吗?

随着软件快速交付需求的增长&#xff0c;越来越多的企业开始通过DevOps方法加速软件开发速度但这样的话&#xff0c;有时候就无法保证质量&#xff0c;所以今天小编就来给大家介绍10款主流的软件测试工具&#xff0c;供大家参考。 1、UFT / QTP UFT&#xff0c;前身为Quick …

10款好用的自动化测试工具

&#x1f4cc; 博客主页&#xff1a; 程序员二黑 &#x1f4cc; 专注于软件测试领域相关技术实践和思考&#xff0c;持续分享自动化软件测试开发干货知识&#xff01; &#x1f4cc; 如果你也想学习软件测试&#xff0c;文末卡片有我的交流群&#xff0c;加入我们&#xff0c;一…

常用的软件测试工具大全

开源测试管理工具&#xff1a;Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具&#xff1a;Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具&#xff1a;Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator **[TestDirector]&…

软件测试工作中有哪些常用的工具?

软件测试工作中有哪些常用的工具&#xff1f;一般来说有开源测试管理工具、开源功能自动化测试工具、开源性能自动化测试工具、Quality Center、QuickTest Professional、LoadRunner等。 一、推荐10款常见的软件测试工具: &#xff08;1&#xff09;Bugfree BugFree是借鉴微软的…

我们常用的软件测试工具有哪些?

一名优秀的软件测试工程师&#xff0c;我觉得他一定也是一名善用工具的好手&#xff0c;他知道在软件测试领域都有哪些测试工具&#xff0c;这些工具都有什么优缺点&#xff0c;这些工具适合在什么情况下使用 &#xff0c;反馈的结果是什么&#xff0c;知道各种工具之间如何配合…

测试工具类

目录 测试接口管理工具&#xff1a; Swagger Eolink APIKit Apipost7  Apifox 自动化测试平台&#xff1a; Choerodon猪齿鱼 MeterSphere RPA 自动化测试框架 Appium Robot Framework Selenium python 自动化测试框架 1.Robot Framework 2.Pytest 3.UnitTest…

软件测试工具有哪些(软件测试常用的工具都有哪些)

一、一个从事软件测试行业十年的老司机列出以下与软件测试相关的工具&#xff1a; 1.操作系统&#xff1a; Linux&#xff1a;vmware、xshell 、xftp 、ssh2.数据库&#xff1a; 主流是以下三种数据库&#xff0c;尤其是MySQL以及oralce,在测试中必会的技能是对表的相关操作&…

软件测试工具都有哪些

小编今天把软件测试常见的工具列了一下&#xff0c;看看有没有你现在在用的&#xff1f; 开源测试管理工具&#xff1a;Bugfree、Bugzilla、TestLink、mantis 开源功能自动化测试工具&#xff1a;Watir、Selenium、MaxQ、WebInject 开源性能自动化测试工具&#xff1a;Jmeter…

10大主流性能测试工具,总有一款适合你

市面上流行的压力/负载/性能测试工具多是来自国外&#xff0c;近年来国内的性能测试工具也如雨后春笋崛起。同时由于开发的目的和侧重点不同&#xff0c;其功能也有很大差异&#xff0c;下面就为您简单介绍10款目前最常见的测试产品。 01 kylinTOP测试与监控平台&#xff08;商…

10个常用的软件测试工具,你不容错过

在现代软件开发中&#xff0c;软件测试是不可或缺的一部分。为了确保软件产品的质量和稳定性&#xff0c;软件测试工具成为了测试团队的得力助手。 有许多优秀的软件测试工具可以帮助测试人员在各种测试活动中提高效率和准确性。 本文将介绍10个常用的软件测试工具&#xff0c;…

Android 实现锚点定位

相信做前端的都做过页面锚点定位的功能&#xff0c;通过<a href"#head"> 去设置页面内锚点定位跳转。 本篇文章就使用tablayout、scrollview来实现android锚点定位的功能。 效果图&#xff1a; 实现思路 1、监听scrollview滑动到的位置&#xff0c;tablayout切…

为什么定位不了HTML,css 锚点定位不了

css 锚点定位不了 css 锚点定位不了只有一个原因&#xff0c;就是书写错误&#xff0c;锚点的正确书写方式有两种&#xff0c;下面为各位介绍一下。 1、使用a标签设置锚点&#xff1a; ①&#xff1a;设置一个锚点链接 html&#xff1b;(注意&#xff1a;href属性的属性值最前面…

vue项目中实现锚点定位

使用场景&#xff1a;当页面被分割成许多小模块&#xff0c;且页面很长时&#xff0c;锚点功能可以帮助我们快速跳转到想要的模块&#xff1b;而当滑动滚动条时&#xff0c;根据当前视图中的显示的模块自动选中对应的锚点。 思路 锚点的id对应模块的元素的id。点击锚点时&#…

Vue3项目中锚点定位实现

代码 <!doctype html> <html class"no-js"><head><meta charset"utf-8"><title>锚点</title><script src"https://unpkg.com/vue3/dist/vue.global.js"></script><link rel"styleshee…

锚点定位——如何设置锚点居页面顶部距离,锚点定位并距离顶部一定偏移

锚点是网页制作中超级链接的一种&#xff0c;又叫命名锚记。命名锚记像一个迅速定位器一样是一种页面内的超级链接&#xff0c;运用相当普遍。 使用命名锚记可以在文档中设置标记&#xff0c;这些标记通常放在文档的特定主题处或顶部。然后可以创建到这些命名锚记的链接&#…

vue中实现锚点定位

vue中实现锚点定位 通过监听滚动事件&#xff0c;高亮显示锚点按钮添加点击事件&#xff0c;根据锚点滚动至对应区域并实现平滑滚动 这里主要是实现了一个简单的滚动触发锚点高亮&#xff0c;以及点击锚点触发滚动的功能 如果是获取浏览器的滚动高度&#xff0c;各个浏览器有所…

VUE实现锚点定位

文章目录 锚点定位功能总述提取标签内的关键词目录的渲染和点击跳转1.目录渲染2.锚点跳转 总结 锚点定位功能总述 在系统中会有管理端和客户端两种&#xff0c;在管理端中通过wangediter发布文章&#xff0c;然后在客户端中获取文章的数据&#xff0c;将其中h1和h2标签中的文字…