Qt中的文件操作

  以普通文件为例(文本文件和二进制文件在这里统称为普通文件),它们是存放在计算机的硬盘上的,在Qt中它被视为一种特殊的IO设备,操作IO设备实质上是对一段存储空间(以块为单位)的读写。

这里写图片描述

  QIODevice是一个抽象类(类内含纯虚函数,不可生成对象),为IO设备提供了共同的实现和接口,支持读写QFile、QBuffer和QTCPSocket等以块为单位的数据。IO操作的常用接口有:

(1) 打开设备:
    bool    open(OpenMode mode)

(2) 读取数据:
    qint64 read(char * data, qint64 maxSize)
    QByteArray  read(qint64 maxSize)
    QByteArray readAll()
    qint64 readLine(char * data, qint64 maxSize)
    QByteArray readLine(qint64 maxSize = 0)

(3) 写入数据:
    qint64 write(const char * data, qint64 maxSize)
    qint64 write(const char * data)
    qint64 write(const QByteArray &byteArray)

(4) 关闭设备
    void close()

  QIODevice中区分了两种类型的设备:随机读写设备和顺序读写设备,对于随机读取设备还可以调用seek()函数定位任意位置,调用pos()函数获取当前位置。QFile类和QBuffer就是随机读取设备的例子。

1. QFile文件类

  QFile是Qt中用于文件操作的类,生成的对象需要对应到计算机上的某个文件。建立Qt控制台程序:

#include <QtCore/QCoreApplication>
#include <QFile>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime>
#include <QByteArray>

void write_file(QString file_path)
{
    QFile file(file_path);

    //以只读文本的方式打开(默认打开方式是数据文件)
    if (file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        file.write("QFile test\n");
        file.write("2017.09.14");

        file.close();
    }
}

void read_file(QString file_path)
{
    QFile file(file_path);

    //以只写文本的方式打开
    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        //读取文件全部内容
        QByteArray dat = file.readAll();
        QString str(dat);

        qDebug() << str;

        file.close();
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    write_file("./tmp.txt");
    read_file("./tmp.txt");

    return a.exec();
}

  运行:
这里写图片描述

  另外通过类QFileInfo可读取文件属性信息:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值