QFile

Qt -- QFile文件读写操作 对于文件的读写操作,C 和 C++ 都各有一套方式。而在 Qt 中也有一套,即使用 QFile 对文件进行读和写操作。 首先创建一个新的工程,以下操作为了迎合 嵌入式Linux 开发,决定在 ubuntu 中进行,并使用 rsync 进行远程调试。 首先,窗体中搭建一个场景,并且将窗体固定为开发板屏幕的大小为1024 * 600 。 搭建步骤如下:首先,将控件 LineEdit 和 PushButton 放入到 Widget 控件中,然后点击选中 Widget 控件 ,使用水平对齐,之后将控件 TextEd 阅读详情

QFile文件操作

文件打开方式:

QIODevice::NotOpen    0x0000   设备不打开.
QIODevice::ReadOnly    0x0001   设备 以只读的方式打开.
QIODevice::WriteOnly    0x0002   设备 以只写的方式打开.
QIODevice::ReadWrite    ReadOnly | WriteOnly    设备以读写的方式打开,写入文件会覆盖之前的内容(打开文件期间多次写入不会覆盖).
QIODevice::Append    0x0004    设备以追加模式打开,以便将所有数据写入文件末尾,此模式下不能读文件.
QIODevice::Truncate    0x0008   如果可能,设备在打开之前会被截断。 设备的所有早期内容都将丢失。
QIODevice::Text    0x0010    读取时,行尾终止符被转换为'\ n'。 写入时,行尾终止符将转换为本地编码,例如Win32的“\ r \ n”。
QIODevice::Unbuffered    0x0020    绕过设备中的任何缓冲区。

 

注意:

普通写入会覆盖之前文件的内容部分或者全部,取决于写入内容的大小。

当同时使用Append方式和其它读文件方式打开文件时,读文件无效。

例如如下代码:

 

复制代码

QFile file("/home/cheng/TestPro/D_FileOperation/File/test.txt");
    if(file.open( QIODevice::ReadWrite | QIODevice::Append ) )// QIODevice::Text |
    {
        QByteArray arr;
        arr =  file.read(6);
        qDebug() << arr;
        file.write("hello qfile!\n");
    }

复制代码

 

"hello qfile!\n"会被追加到文件里,arr输出为空。

QByteArray类

QByteArray类提供了一个字节数组。

QByteArray可用于存储原始字节(包括'\ 0')和传统的8位'\ 0'终止字符串。使用QByteArray比使用const char *更方便。在幕后,它始终确保数据后跟'\ 0'终止符,并使用隐式共享(写时复制)来减少内存使用并避免不必要的数据复制。

写文件

复制代码

qint64 QIODevice::write ( const char * data, qint64 maxSize )  //将最多maxSize字节的数据从数据写入设备。 返回实际写入的字节数,如果发生错误,则返回-1。
qint64 QIODevice::write ( const char * data )  //将数据从零字节的8位字符串写入设备。 返回实际写入的字节数,如果发生错误,则返回-1。 
qint64 QIODevice::write ( const QByteArray & byteArray )  //将byteArray的内容写入设备。 返回实际写入的字节数,如果发生错误,则返回-1。

复制代码

 

复制代码

QFile file("/home/cheng/TestPro/D_FileOperation/File/test.txt");
    if(file.open( QIODevice::WriteOnly ))
    {
        const char* data = "hello qfile!\n";
        QByteArray arr(data);
        file.write(data);
        file.write(arr);
        file.write(data,5);
    }

复制代码

文件中被写入如下内容:

hello qfile!
hello qfile!
hello

 

读文件

read()函数

复制代码

qint64 QIODevice::read ( char * data, qint64 maxSize )//

从设备读取最多maxSize字节为数据,并返回读取的字节数。 如果发生错误,例如尝试从以WriteOnly模式打开的设备读取时,此函数返回-1。当没有更多数据可供读取时,返回0。在关闭的套接字上读取或在进程死亡后读取也会返回-1

QByteArray QIODevice::read ( qint64 maxSize )  //从设备读取最多maxSize字节,并返回读取为QByteArray的数据。
此功能无法报告错误; 返回一个空的QByteArray()可能意味着当前没有数据可用于读取,或者发生了错误。

复制代码

复制代码

QFile file("/home/cheng/TestPro/D_FileOperation/File/test.txt");
    if (file.open(QFile::ReadOnly))
    {
     //QByteArray arr = file.read(1024);
         //qDebug() << arr;
         char buf[1024];
         qint64 lineLength = file.read(buf, sizeof(buf));
         if (lineLength != -1)
         {
             QString str(buf);//将字符数组转换为QString
             qDebug() << str;
         }
     }

复制代码

打印结果:

"hello qfile!
hello qfile!
hello"

 

readAll()函数

QByteArray QIODevice::readAll ()

从设备读取所有可用数据,并将其作为QByteArray返回。
此功能无法报告错误; 返回一个空的QByteArray()可能意味着当前没有数据可用于读取,或者发生了错误。

复制代码

QFile file("/home/cheng/TestPro/D_FileOperation/File/test.txt");
    if (file.open(QFile::ReadOnly))
    {
         QByteArray arr = file.readAll();
         qDebug() << arr;

     }

复制代码

打印结果:

"hello qfile!
hello qfile!
hello"

readData()函数

qint64 QIODevice::readData ( char * data, qint64 maxSize ) [pure virtual protected]

将从设备读取的maxSize字节读取到数据中,并返回读取的字节数,发生错误时返回-1。 如果没有要读取的字节,如果永远不会有更多可用字节,则此函数应返回-1(例如:socket closed,pipe closed,sub-process finished)。
该功能由QIODevice调用。 在创建QIODevice的子类时重新实现此功能。

readLine()函数

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

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

 

此函数调用readLineData(),readLineData()是使用对getChar()的重复调用实现的。 您可以通过在自己的子类中重新实现readLineData()来提供更高效的实现。

复制代码

QFile file("/home/cheng/TestPro/D_FileOperation/File/test.txt");
    if (file.open(QFile::ReadOnly))
    {
        char buf[1024];
        qint64 lineLength = file.readLine(buf, sizeof(buf));
        if (lineLength != -1)
        {
            QString str(buf);
            qDebug() << str;
        }
    }

复制代码

打印结果:

"hello qfile!
"

可以看出"\n"也被附加到了数据里。

getChar()函数

bool QIODevice::getChar ( char * c )

从设备中读取一个字符并将其存储在c中。 如果c为0,则丢弃该字符。 成功时返回true; 否则返回false。

 


 

QIODevice类

QIODevice类是Qt中所有I / O设备的基本接口类。

QIODevice为支持读取和写入数据块的设备提供了通用实现和抽象接口,例如QFile,QBuffer和QTcpSocket。 QIODevice是抽象的,无法实例化,但通常使用它定义的接口来提供与设备无关的I / O功能。 例如,Qt的XML类在QIODevice指针上运行,允许它们与各种设备(例如文件和缓冲区)一起使用。
在访问设备之前,必须调用open()来设置正确的OpenMode(例如ReadOnly或ReadWrite)。 然后,您可以使用write()或putChar()写入设备,并通过调用read(),readLine()或readAll()来读取。 完成设备后,请调用close()。

 

QIODevice区分两种类型的设备:随机访问设备和顺序设备。

随机访问设备支持使用seek()寻找任意位置。通过调用pos()可以获得文件中的当前位置。 QFile和QBuffer是随机访问设备的示例。
顺序设备不支持寻找任意位置。必须一次读取数据。函数pos()和size()不适用于顺序设备。 QTcpSocket和QProcess是顺序设备的

 

QIODevice的某些子类(例如QTcpSocket和QProcess)是异步的。这意味着诸如write()或read()之类的I / O函数总是立即返回,而当控制返回到事件循环时,可能会发生与设备本身的通信。 QIODevice提供的功能允许您强制立即执行这些操作,同时阻止调用线程并且不进入事件循环。这允许在没有事件循环的情况下使用QIODevice子类,或者在单独的线程中使用:
waitForReadyRead() - 此函数暂停调用线程中的操作,直到有新数据可供读取。
waitForBytesWritten() - 此函数暂停调用线程中的操作,直到已将一个数据有效负载写入设备。
waitFor ....() - QIODevice的子类为特定于设备的操作实现阻塞功能。例如,QProcess有一个名为waitForStarted()的函数,它暂停调用线程中的操作,直到进程启动。
从主GUI线程调用这些函数可能会导致用户界面冻结。

qt QFile & QTextStream \QDataStream读写文件操作 QFile是Qt中的一个类,用于读写文件。它提供了一些基本的文件操作方法,如打开、关闭、读取和写入等。 阅读详情

相关推荐

Qt 文件读写的三种方法(QFile,QTextStream,QDataStream)

任务:把固定的char[256]这片区域写到文件中。

笔记本 1906

QT学习随记 (七)—— QFile文件读写操作以及信息读取

由于工作繁忙,历时两周断断续续的学习也算是完结毕业啦,接下来就可以开始开发Qt啦,祝大家学有所得,如有什么问题还请各位大佬指正。//////////////////////////////////////////////////////////////假装是分割线///////////////////////////////////////////////////////////////////////❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀完结撒花❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀❀。

CocoBrowniee的博客 2667

使用QFile进行文件操作

QFile类我我们提供了操作文件的常用功能。它是一种io设备,可以用来读写文本文件和二进制文件,也可以用来读写Qt的资源文件。QFile类可以单独使用,该类本身提供了read/write函数,但更方便的方式是,将QFile和QTextStream或QDataStream一起使用。 一般情况下,使用QFile创建对象时,就会把要操作的文件名传递给它。但该类也提供了一个setFileName() 方

3万+

QT文件编程QFile

构造函数、设置文件名、打开文件、关闭文件、读取文本文件,函数(1):(read函数)函数(2):(readLine函数)、从文件中读取二进制数、写入文本文件、写入二进制文件、判断文件是否存在、获取文件名、返回文件大小、删除文件、重命名文件、复制文件

2301_76958642的博客 2195

QT 使用QFile文件操作类详解

本文讲解QFile文件操作类

qq_30725967的博客 3万+

《Sigrity SystemSI 2023+LPDDR4仿真自学笔记》(一)创建工程(Part1)

为了加强SystemSI 2023软件的熟悉度,咱们完整的走一个仿真全流程。

weixin_45199544的博客 6335

Qt的QFile

在这里可以说是Qt的帮助文档一样了!确定不进来看看QFile这个东西怎么用么!

焕小谢的博客 4220

新手必看:四旋翼无人机PID调参实战指南(附常见问题排查)

本文为四旋翼无人机新手提供PID调参实战指南,详细解析Kp、Ki、Kd参数的实际意义及调参技巧,包含常见问题排查方法。通过系统化的调参流程和实用参考表,帮助用户快速掌握无人机飞行控制核心技能,避免常见错误,提升飞行稳定性与响应性能。

k0l1m2n3o的博客 601

QT 文件操作 QFile

输入/输出设备 QIODevice 类是 Qt 中所有 I/O 设备的基础接口类,为诸如 QFile、QBuffer 和 QTcpSocket 等支持读/写数据块的设备提供了一个抽象接口。QIODevice类是抽象的,无法被实例化,一般是使用它所定义的接口来提供设备无关的 I/O 功能。 文件QFile QFile类提供一个用于读/写文件的接口,它是一个可以用来读写文本文件、二进制文件...

心若十年的博客 2万+

从飞机翼型仿真到燃烧模拟:Fluent多物理场耦合的3种实战策略

本文深入探讨了Fluent在多物理场耦合仿真中的三种实战策略,涵盖可压缩流动与燃烧耦合、湍流模型选择及网格策略,以及顺序耦合、强耦合和混合耦合方法。通过具体案例和工程实践,帮助中高级用户提升仿真精度和效率,适用于航空航天和能源化工等领域。

aa123的博客 994

从手机到自动驾驶:MIPI-CSI2协议演进史与车规级改造要点

本文追溯了MIPI-CSI2协议从智能手机摄像头到自动驾驶核心传感器的演进历程。重点剖析了该协议在车规级改造中面临的严苛挑战,包括物理层稳定性、EMC防护、功能安全与数据可靠性等关键要点,并探讨了其在多传感器融合与高带宽实时传输中的工程实践。

weixin_28318011的博客 309

QFile文件读写

文章目录简介常用apiQFile类读写文件QFile+QTextStream读写文件 简介 QFile类提供了一个读取和写入文件的接口,一个读写文本、二进制文件和资源的I/O设备。 QFile读写文件的两种方式: 1.QFile可以单独使用。 2.QFile与QTextStream或QDataStream一起使用。 注意:不管操作系统是什么,QFile都希望文件分隔符是’/‘。不支持使用其他分隔符(例如’')。 常用api 设置文件路径名,可以通过构造函数传参 QFile(const QString &am

weixin_44901043的博客 9251

保姆级教程:在RK3588 Android12设备树(DTS)中配置MIPI 8 Lane双通道与DSC显示

本文详细介绍了在RK3588 Android12平台上配置MIPI 8 Lane双通道与DSC显示的实战指南。通过设备树(DTS)参数详解、DSC参数计算与PPS配置、双通道同步机制实现等内容,帮助开发者高效完成高分辨率屏幕驱动配置,解决嵌入式显示系统开发中的常见挑战。

weixin_30905133的博客 399

Qt之Qfile类

很多应用程序都具备操作文件的能力,包括对文件进行写入和读取,创建和删除文件等等,甚至某些应用程序的就是为了操作文件,像WPS Office。与单独使用QFile类相比,QTextStream类提供了很多读写文件相关的方法,还可以设定写入到文件的数据格式,比如对齐方式,写入数据是否带前缀等等。QFile类支持对文件进行读取和写入,删除,重命名,拷贝等常见的文件操作,它既可以操作文本文件,也可以用来操作二进制文件。与C++的读写规则一样,在对文件进行相关操作之前,我们需要先打开文件,打开文件我们使用。

2301_79181030的博客 1348

基于libVLC的视频播放器之四:直接使用libVLC

一.效果 播放本地文件 播放网络url:rtsp://3.84.6.190/vod/mp4:BigBuckBunny_115k.mov 二.实现 既然有VLC-Qt,为什么还要直接调用libVLC呢,因为直接调用会加深对整个播放流程的理解,方便后面修改VLC-Qt源码。 注意事项: 1.编译报错:error C2065: “libvlc_media_read_cb”: 未声明的标识符。修改如下: 2.libvlc_new(0, nullptr)返回null 将plugins

草上爬的博客 5049

IgH EtherCAT 从入门到精通:第 30 章 实战:高可用 EtherCAT 系统设计

摘要:构建高可用EtherCAT系统的关键技术 本章详细介绍了工业级EtherCAT系统的高可用性设计方法,主要包括: 冗余链路架构:采用双网卡环形拓扑设计,主备网卡同时工作,通过IgH Master的冗余配置实现线缆故障自动切换。 状态监控机制:提供专用API实时监控主备链路状态,包括从站响应数、链路状态和冗余激活标志,形成完整的故障判断矩阵。 自动恢复功能:系统内置FSM架构支持热插拔自动检测和重配置,从站断线/重连时可自动完成状态恢复,同时允许应用层实施安全措施。 这些技术共同构成了生产环境下Ethe

从事嵌入式linux android驱动开发,拥有全栈能力 244

QFile 总结

void QFile::flush () [虚] 刷新文件缓存到磁盘。close() 也刷新文件缓存。

u013639526的专栏 3162

37、基于铁电场效应晶体管(FeFET)的片上深度神经网络(DNN)直接反馈对齐训练

本文提出了一种基于铁电场效应晶体管(FeFET)的深度神经网络(DNN)训练加速器架构,结合直接反馈对齐(DFA)算法和FeFET的独特物理特性,以解决当前DNN训练中反向传播(BP)算法带来的高计算开销、复杂数据依赖和高能耗问题。通过设计基于FeFET的MVM引擎、低功耗ADC和随机数生成器(RNG),该架构在速度和功率效率方面相比现有基于ReRAM的加速器分别提升了1.3倍和2.5倍。研究为未来高效能AI训练硬件的发展提供了新的思路和实现路径。

wine的专栏 164

QFile 使用详解

QFile 是 Qt 框架中用于文件操作的类,提供了丰富的功能来处理文件的读写、复制、删除、重命名等操作。以下是一些常见的 QFile 操作示例,包括打开文件、读取文件、写入文件、复制文件、删除文件等。QFile 提供了丰富的文件操作功能,包括打开、读取、写入、复制、删除、重命名和获取文件信息等。通过这些操作,开发者可以方便地处理文件,满足各种应用需求。转载请附上文章出处与本文链接。选择文件。

断点 2058

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

QFile类使用

QFile是Qt中提供的文件I/O操作类,它支持在Windows、MacOS和Linux等操作系统下操作文件。使用QFile可以方便地读取、写入和处理文件,同时还能检查文件的大小、相关属性和状态等。

zw_ggr_2017的博客 3337

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

QFile文件操作方法

QFile 类支持对文件进行读取、写入、删除、重命名、拷贝等操作,它既可以操作文件文件,也可以操作二进制文件。 根据需要,可以为 mode 参数一次性指定多个值,值和值之间用|分割。比如: QIODevice::ReadOnly | QIODevice::Text:表示只允许对文件进行读操作,读取文件时,会将行尾 二.QFile方法 1.使用 QFile 读写文件之前必须先打开文件,调用 open() 成员方法即可,常用的语法格式为: bool QFile::open(OpenMode mode)

热土程序园,利他愉己~ 3379

Qt QFile文件操作详解

单独使用 QFile 类读写文件的过程既繁琐又复杂,Qt 提供了两个辅助类 QTextStream 和 QDataStream,前者用来读写文件文件,后者用来读写二进制文件,QFile 可以和它们搭配使用,从整体上提高读写文件的开发效率。参数 name 用来指定要操作的目标文件,包含文件的存储路径和文件名,存储路径可以使用绝对路径(比如 “D:/Demo/test.txt”)或者相对路径(比如"./Demo/test.txt"),路径中的分隔符要用 “/” 表示。文件操作是非常重要的,是数据持久化的方法。

qq_41854911的博客 3476
上一篇: MFC 界面练习
下一篇: QDataStream
枸杞养生
博客等级 码龄11年 14粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值