qt文件操作
二、文件操作
2.1、QFile
QFile 类提供了 一个用于读/写文件的接口,它可以用来读/写文本文件、二进制文件和 Qt 资源的 I/0 设备。
一般在构建 QFile 对象时便指定文件名,当然也可以使用 setFileName ()进行设置。可以使用 exists() 来检查文件是否存在使用 remove()来删除一个文件 。
一个文件可以使用 open() 打开,使用 close()关闭,使用 flush()刷新 ,文件的读写可以使用 read ()、 readLine ()、 readAll ()和 write (),可以使用自size()函数来获取文件的大小,使用 seek ()来定位到文件 的任意位置,使用 pos ()来获取当前的位置,使用 atEnd ()来判断是否到达了文件的末尾 。
还是可以用以下学过FILE,fstream这些来进行文件操作
2.2、打开并写入文件
文件操作流程 打开>写入/读取>关闭
访问一个设备以前,需要使用 open ()函数打开该设备,而且必须指定正确的打开模式,不同的打开模 式之间可以使用“|”符号同时使用。
打开设备后可以使用 write()或者 putChar()来进行写人,可以使用seek函数进行文件指针移动(如果 有),使用read ()、 readLine ()或者 readAll ()进行读取,最后使用 close()关闭设备。
/*
* ReadOnly = 0x0001, //只读,文件不存在就报错
WriteOnly = 0x0002, //只写,文件不存在就创建新的
ReadWrite = ReadOnly | WriteOnly, //读写,文件不存在就报错
Append = 0x0004, //追加,文件不存在就创建新的,文件指针在末尾
Truncate = 0x0008, //只写,文件存在就清空里面的内容,重写,文件不存在就创建新的
Text = 0x0010, //以文本方式打开
*/
QFile file("D:/test/1.txt");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))//打开方式
{
qDebug() << file.errorString();
}
else
{
qDebug() << "打开成功!";
}
file.write("hello thank you!"); //可能会有字符集问题
file.close();
2.3、读取里面所有内容
QFile file("D:/test/1.txt");
if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qDebug() << file.errorString();
}
else
{
qDebug() << "打开成功!";
}
//QString str= file.readAll(); //用qstring存一下
//qDebug()<<str;
while(!file.atEnd())
{
QByteArray line=file.readLine();
qDebug()<<line;
}
file.close();
2.4、其他操作
获取的文件大小:size()
更改文件的名字:rename("新名字")
删除文件:remove()
获取一行中的某个位子的字符:先用readLine()读完这行,然后通过 string的mid函数处理
mid(5,1)从第五个位置,获取1个字符
移动文件指针:seek(5)
2.5、QIOdevice类
QIODevice 类是 Qt 所有 I/O 设备的基础类 ,为QFIle等类提供一个抽象接口
继承图,QFile这些都是他的子类
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能