Qt之读写文件

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()

关闭文件

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

文件打开模式

模式

描述

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的使用:

    //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();

控制台输出结果如下:

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

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QT嵌入式开发,Quick模块等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值