当前位置:网站首页>Qt | 文件操作 QFile
Qt | 文件操作 QFile
2022-08-02 15:06:00 【华为云】
前言:
我们经常需要对设备或文件进行读取或写入的操作,QIODivece类是Qt中所有I/O设备的基础接口类,为支持读/写数据的设备提供了抽象接口。QIODivece类是抽象的,无法被实例化,一般是使用它所定义的接口来提供设备无关的I/O功能。
访问设备:
访问设备的流程:
访问一个设备前需要使用open() 函数打开设备;
打开设备后可以使用write() 函数或putChar() 函数来进行写入;
使用read() 函数、readLine() 函数,或者readAll() 函数进行读取;
最后使用close() 函数关闭设备。
注:使用open()函数打开设备时,必须指定正确的打开模式,QIODivice中所有的打开模式由QIODivice::OpenMode枚举类型定义,可以使用按位或符号“|”来同时使用。
打开模式:
QIODivice::NotOpen: 设备没有打开;
QIODivice::ReadOnly: 设备以只读方式打开,这时无法写入;
QIODivice::WriteOnly: 设备以只写方式打开,这时无法读取;
QIODivice::ReadWrite: 设备以读/写方式打开;
QIODivice::Append: 设备以附加模式打开,所有的数据都将写入到文件的末尾;
QIODivice::Truncate: 如果可能,设备在打开前会被截断,设备先前的所有内容都将丢失;
QIODivice::Text: 当读取时,行结尾终止符会被转换为“\n”;当写入时,行结尾终止符会被转换为本地编码,例如,在Win32上时“\r\n”;
QIODivice::Unbuffered: 绕过设备所有的缓冲区;
随机存取设备和顺序存储设备:
随机存取设备有: QFile、QBuffer等。它们支持使用seek() 函数来定位到任意的位置。文件中的当前位置可以使用pos() 函数来获取。
顺序存储设备有: QTcpSocket、QProcess等。它们不支持定位到任意的位置,数据必须一次性读取。无法使用pos()和size()等函数。
文件操作:
QFile类提供了一个用于读/写文件的接口,它是一个可以用来读/写文本文件、二进制文件和Qt资源的I/O设备。
操作文件的函数:
setFileName(): 设置文件名称,一般在QFile构造函数指定文件名,也可以使用setFileName进行设置。
existes(): 检查文件是否存在。
remove(): 删除一个文件。
flush(): 刷新文件。
size(): 获取文件大小。
seek(): 定位到文件的任意位置。
pos(): 获取当前的位置。
atEnd(): 判断是否到达了文件的末尾。
例:
QFile file(“myfile.txt”);
if(!file.open(QIODivece::WriteOnly))
{
qDebug() << file.errorString();
}
file.write(“hello Qt!”);
file.close();
注: 当使用写入模式打开文件时,如果文件不存在,那么就会自动创建一个文件。
边栏推荐
猜你喜欢
随机推荐
codeforces k-Tree (dp still won't work)
剑指Offer 49.丑数 动态规划
Go-5-简单介绍fmt库
华为研究院19级研究员几年心得,终成趣谈网络协议文档,附大牛讲解
How to use PHP to implement lexical analyzer and custom language
【服务器数据恢复】Raid阵列更换故障硬盘后数据同步失败的数据恢复案例
Application software code signing certificate
SQL学习笔记——REGEXP运算符
Basic management of system storage -- mounts, partitions, user quotas
美团面试:如何设计一个注册中心?
Thinkpad E430c使用u盘安装系统
并发模型和I/O模型介绍
兆骑科创双创服务平台,创业赛事活动,投融资对接平台
太帅了!我用炫酷大屏展示爬虫数据!
MPLS实验
Brute-force cracking of the latest JVM interview questions of Meituan: unlimited execution
“绿色低碳+数字孪生“双轮驱动,解码油气管道站升级难点 | 图扑软件
5000mAh大电池!华为全新鸿蒙手机今晚亮相:更流畅更安全
GFP-GAN学习笔记
Go-6-常用命令-go包管理问题-两个路径-GO111MODULE