首页 > 代码库 > 第三十二课、Qt中的文件操作

第三十二课、Qt中的文件操作

一、Qt中的IO操作

1、Qt中IO操作的处理方式

(1)、Qt通过统一的接口简化了文件与外部设备的操作方式

(2)、Qt中的文件被看做是一种特殊的外部设备

(3)、Qt中的文件操作与外部设备操作相同

2、IO操作中的关键函数接口

技术分享

注意:IO操作的本质:连续存储空间的数据读写

3、Qt中IO设备类型

(1)、顺序存储设备:只能从头开始顺序读写数据,不能指定数据的读写位置(串口)

(2)、随机存储设备:可以定位到任意位置进行数据读写(seek function函数)(文件)

4、Qt中IO设备 的继承层次图

技术分享

二、Qt中的文件操作

1、QFile是Qt中用于文件操作的类

2、QFile对象对应到计算机上的一个文件

技术分享

3、QFineInfo类用于读取文件属性信息

技术分享

技术分享
#include <QtCore/QCoreApplication>
#include <QFile>
#include <QString>
#include <QDebug>
#include <QFileInfo>
#include <QDateTime>

void write(QString f)
{
    QFile file(f);

    if(file.open(QIODevice::ReadWrite | QIODevice::Text))
    {
        file.write("ABCDEFG\n");//有就打开,没有就创建,并且写的时候覆盖里面的内容
        file.write("ABCDEFG");
        file.close();
    }
}

void read(QString f)
{
    QFile file(f);
    if(file.open(QIODevice::ReadWrite | QIODevice::Text))
    {
        QByteArray ba = file.readLine();
        QString s(ba);
        qDebug() << s;

        file.close();
    }
}
void info(QString f)
{
    QFile file(f);
    QFileInfo info(file);
    qDebug() << info.exists();
    qDebug() << info.isFile();
    qDebug() << info.isReadable();
    qDebug() << info.isWritable();
    qDebug() << info.created();
    qDebug() << info.lastRead();
    qDebug() << info.lastModified();//最后修改时间
    qDebug() << info.path();
    qDebug() << info.fileName();
    qDebug() << info.suffix();//后缀
    qDebug() << info.size();

}


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

    write("F:/Qt/lesson32/text.txt");
    read("F:/Qt/lesson32/text.txt");
    info("F:/Qt/lesson32/text.txt");

    return a.exec();
}
main.cpp

4、Qt中提供了临时文件操作类QTemPoraryFile

(1)、安全创建全局唯一的临时文件

(2)、当对象销毁时对应的临时文件销毁

(3)、临时文件的打开方式为QIODevice::ReadWrite

(4)、临时文件用于大数据传递或者进程间通信的场合

技术分享

技术分享
#include <QtCore/QCoreApplication>
#include <QTemporaryFile>
#include <QFileInfo>
#include <QDebug>

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

    if( tempFile.open() )//默认可读可写
    {
        tempFile.write("D.T.Software");
        tempFile.close();
    }

    QFileInfo info(tempFile);

    qDebug() << info.isFile();
    qDebug() << info.path();
    qDebug() << info.fileName();

    return a.exec();
}
QTemporaryFile.cpp

三、小结

(1)、Qt通过统一的方式读写文件和统一的设备

(2)、Qt中IO设备的类型分为顺序存储随机存储两种

(3)、QFile提供了文件操作的相关方法

(4)、QFileInfo提供了读取文件属性的相关方法

(5)、Qt中提供了临时文件操作类QTemPoraryFile

第三十二课、Qt中的文件操作