您的位置:首页 > 编程语言 > Qt开发

Qt之读写文件

2016-04-26 12:03 363 查看

1.思路

读写文件的基本操作:

读文件写文件
打开文件打开文件
读取文件写入文件
关闭文件关闭文件

2.QFile实现读写文件

QFile类提供读写文件的接口。

它的构造函数如下:

QFile(const QString & name)

QFile(QObject * parent)

QFile(const QString & name, QObject * parent)

通过它的构造函数我们可以知道,可以直接在调用构造函数的时候直接传递文件名给QFile类,这是常用的方法,或者我们先生成QFile对象,然后调用setFileName()方法来设置文件。

其中文件名中的路径分隔符要求必须是’/’,其他分隔符QFile不支持。

然后再了解下QFile的常用函数以及打开文件的模式类型:

QFile的常用函数:

函数名功能
copy()复制文件
exists()检查文件是否存在
open()打开文件
remove()删除文件
rename()修改文件名
setFileName()设置文件名
size()文件大小
pos()文件光标当前位置
seek()设置文件光标位置
atEnd()判断当前是否为文件尾
read()读取文件内容
close()关闭文件
文件打开模式

模式描述
QIODevice::NotOpen0x0000不打开
QIODevice::ReadOnly0x0001只读方式
QIODevice::WriteOnly0x0002只写方式,如果文件不存在则会自动创建文件
QIODevice::ReadWriteReadOnly | WriteOnly读写方式
QIODevice::Append0x0004此模式表明所有数据写入到文件尾
QIODevice::Truncate0x0008打开文件之前,此文件被截断,原来文件的所有数据会丢失
QIODevice::Text0x0010读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’
QIODevice::UnBuffered0x0020不缓存
下面通过代码来看看QFile的使用:

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

//操作文件

//关闭文件
file.close();


写文件

//example 2
QFile file("test.csv");

//判断文件是否存在
if(file.exists()){
qDebug()<<"文件已存在";
}else{
qDebug()<<"文件不存在";
}
//已读写方式打开文件,
//如果文件不存在会自动创建文件
if(!file.open(QIODevice::ReadWrite)){
qDebug()<<"打开失败";
}else{
qDebug()<<"打开成功";
}

//获得文件大小
qint64 pos;
pos = file.size();
//重新定位文件输入位置,这里是定位到文件尾端
file.seek(pos);

QString content = "welcome to BeiJing";

//写入文件
qint64 length = -1;
length = file.write(content.toLatin1(),content.length());

if(length == -1){
qDebug()<<"写入文件失败";
}else{
qDebug()<<"写入文件成功";
}

//关闭文件
file.close();


控制台运行结果:



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



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

读文件

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



代码如下:

QFile file("test.csv");

//判断文件是否存在
if(file.exists()){
qDebug()<<"文件已存在";
}else{
qDebug()<<"文件不存在";
}
//已读写方式打开文件,
//如果文件不存在会自动创建文件
if(!file.open(QIODevice::ReadWrite)){
qDebug()<<"打开失败";
}else{
qDebug()<<"打开成功";
}

//读取文件
int line = 1;
//判断文件是否已经读到末尾了
while(!file.atEnd()){
char buffer[1024];
//读取一行数据
qint64 length = file.readLine(buffer,1024);
if(length != -1){
qDebug()<<line++<<":"<<buffer;
}
}

//关闭文件
file.close();


控制台输出结果如下:



和我们开始文件中准备的内容一致,表明已成功读取。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  QFile 读写文件