Qt开发之路20---文件操作(QFile、QFileInfo)

一:概述

文件操作是应用程序必不可少的部分。Qt 作为一个通用开发库,提供了跨平台的文件操作能力。在所有的 I/O 设备中,文件 I/O 是最重要的部分之一。因为我们大多数的程序依旧需要首先访问本地文件。QFile提供了从文件中读取和写入数据的能力。

二:QFile、QFileInfo

我们通常会将文件路径作为参数传给QFile的构造函数。不过也可以在创建好对象最后,使用setFileName()来修改。QFile需要使用 / 作为文件分隔符,不过,它会自动将其转换成操作系统所需要的形式。例如 C:/windows 这样的路径在 Windows 平台下同样是可以的。
QFile主要提供了有关文件的各种操作,比如打开文件、关闭文件、刷新文件等。我们可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数。值得注意的是,有关文件本身的信息,比如文件名、文件所在目录的名字等,则是通过QFileInfo获取,而不是自己分析文件路径字符串。

三:例程

例程1

#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QFileInfo>

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

    QFile file("test.txt");
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"open file failed";
        return -1;
    }else {
        while (!file.atEnd()) {
            qDebug()<<file.readLine();
        }
    }

    QFileInfo info(file);
    qDebug() << "isDir:" << info.isDir();
    qDebug() << "isExecutable:" << info.isExecutable();
    qDebug() << "baseName:" << info.baseName();
    qDebug() << "completeBaseName:" << info.completeBaseName();
    qDebug() << "suffix:" << info.suffix();
    qDebug() << "completeSuffix:"<<info.completeSuffix();

    return a.exec();
}

在这里插入图片描述
例程2

#include <QApplication>
#include <QDebug>
#include <QFile>
#include <QFileInfo>

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

    QFile file("test.gz.txt");
    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)){
        qDebug()<<"open file failed";
        return -1;
    }else {
        while (!file.atEnd()) {
            qDebug()<<file.readLine();
        }
    }

    QFileInfo info(file);
    qDebug() << "isDir:" << info.isDir();
    qDebug() << "isExecutable:" << info.isExecutable();
    qDebug() << "baseName:" << info.baseName();
    qDebug() << "completeBaseName:" << info.completeBaseName();
    qDebug() << "suffix:" << info.suffix();
    qDebug() << "completeSuffix:"<<info.completeSuffix();

    return a.exec();
}

在这里插入图片描述

四:分析

  1. 使用QFile创建了一个文件对象。
    这个文件名字是 test.txt。如果你不知道应该把它放在哪里,可以使用QDir::currentPath()来获得应用程序执行时的当前路径。只要将这个文件放在与当前路径一致的目录下即可。
  2. 使用open()打开这个文件,打开形式是只读方式,文本格式。
    这个类似于fopen()的 r 这样的参数。open()函数返回一个 bool 类型,如果打开失败,我们在控制台输出一段提示然后程序退出。否则,我们利用 while 循环,将每一行读到的内容输出。
  3. 使用QFileInfo获取有关该文件的信息
    QFileInfo有很多类型的函数,比如:
    **isDir()**检查该文件是否是目录;
    isExecutable() 检查该文件是否是可执行文件等;
    **baseName()**获得文件名;
    completeBaseName() 获取完整的文件名;
    suffix() 获取文件后缀名;
    completeSuffix() 获取完整的文件后缀;
    由上面的例程1和例程2可以看到,baseName()和completeBaseName(),以及suffix()和completeSuffix()的区别。

上一篇:Qt开发之路19—文件系统
下一篇:Qt开发之路21—二进制文件读写 QDataStream

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值