Qt之读写文件

Qt之读写文件

1.思路

读写文件的基本操作:

读文件

写文件

打开文件

打开文件

读取文件

写入文件

关闭文件

关闭文件

2.QFile实现读写文件

QFile类提供读写文件的接口。它的构造函数如下:QFile(constQString&name)QFile(QObject*parent)QFile(constQString&name,QObject*parent)通过它的构造函数我们可以知道,可以直接在调用构造函数的时候直接传递文件名给QFile类,这是常用的方法,或者我们先生成QFile对象,然后调用setFileName()方法来设置文件。其中文件名中的路径分隔符要求必须是’/’,其他分隔符QFile不支持。然后再了解下QFile的常用函数以及打开文件的模式类型:QFile的常用函数:

函数名

功能

copy()

复制文件

exists()

检查文件是否存在

open()

打开文件

remove()

删除文件

rename()

修改文件名

setFileName()

设置文件名

size()

文件大小

pos()

文件光标当前位置

seek()

设置文件光标位置

atEnd()

判断当前是否为文件尾

read()

读取文件内容

close()

关闭文件

文件打开模式

【领QT开发教程学习资料,点击下方链接莬费领取↓↓,先码住不迷路~】

点击→领取「链接」

模式

描述

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

不缓存

下面通过代码来看看QFile的使用:

//example1QFilefile(“test.csv”);//已读写方式打开文件,//如果文件不存在会自动创建文件if(!file.open(QIODevice::ReadWrite)){//ReadOnly文件不存在,打开失败//WriteOnly文件不存在,会自动创建文件//ReadWrite文件不存在,会自动创建文件//Append文件不存在,会自动创建文件//Truncate文件不存在,打开失败//Text文件不存在,打开失败//Unbuffered文件不存在,打开失败qDebug()<<“打开失败”;}else{qDebug()<<“打开成功”;}//操作文件//关闭文件file.close();

写文件

//example2QFilefile(“test.csv”);//判断文件是否存在if(file.exists()){qDebug()<<“文件已存在”;}else{qDebug()<<“文件不存在”;}//已读写方式打开文件,//如果文件不存在会自动创建文件if(!file.open(QIODevice::ReadWrite)){qDebug()<<“打开失败”;}else{qDebug()<<“打开成功”;}//获得文件大小qint64pos;pos=file.size();//重新定位文件输入位置,这里是定位到文件尾端file.seek(pos);QStringcontent=“welcometoBeiJing”;//写入文件qint64length=-1;length=file.write(content.toLatin1(),content.length());if(length==-1){qDebug()<<“写入文件失败”;}else{qDebug()<<“写入文件成功”;}//关闭文件file.close();

控制台运行结果:

打开文件看看里面的内容:

正是我们程序中写入的内容。

读文件我们现在test.csv文件内准备两行数据

代码如下:

QFilefile(“test.csv”);//判断文件是否存在if(file.exists()){qDebug()<<“文件已存在”;}else{qDebug()<<“文件不存在”;}//已读写方式打开文件,//如果文件不存在会自动创建文件if(!file.open(QIODevice::ReadWrite)){qDebug()<<“打开失败”;}else{qDebug()<<“打开成功”;}//读取文件intline=1;//判断文件是否已经读到末尾了while(!file.atEnd()){charbuffer[1024];//读取一行数据qint64length=file.readLine(buffer,1024);if(length!=-1){qDebug()<<line++<<“:”<<buffer;}}//关闭文件file.close();

控制台输出结果如下:

和我们开始文件中准备的内容一致,表明已成功读取。

本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。