码迷,mamicode.com
首页 > 其他好文 > 详细

第32课 Qt中的文件操作

时间:2016-08-11 21:05:24      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

1. Qt的中IO操作

(1)Qt中IO操作的处理方式

  ①Qt通过统一的接口简化了文件和外部设备的操作方式

  ②Qt中的文件被看作一种特殊的外部设备

  ③Qt中的文件操作与外部设备的操作相同

(2)IO操作中的关键函数接口——IO操作的本质连续存储空间的数据读写

  ①打开设备:bool open(OpenMode mode);

  ②读取数据:QByteArray read(qint64 maxSize);

  ③写入数据:qint64 write(const QByteArray& byteArray);

  ④关闭设备:void close();

(3)Qt中IO设备的类型

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

  ②随机存取设备:可以定位到任意的位置进行数据的读写(seek function),如文件

2. Qt中IO设备的继承层次图

技术分享 

3. Qt中的文件操作

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

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

(3)QFileInfo类用于读取文件的属性信息

【编程实验】文件操作初体验

技术分享

//32-1.pro

QT += core
QT -= gui

CONFIG += c++11

TARGET = 32-1
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp

//main.cpp

#include <QCoreApplication>
#include <QFile>
#include <QFileInfo>
#include <QDateTime>
#include <QDebug>

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

    //可写、文本文本,当文件不存在时会创建新文件
    if (file.open(QIODevice::WriteOnly | QIODevice::Text))
    {
        file.write("Line1\n");
        file.write("Line2\n");
        file.close();
    }
}

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

    if(file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QByteArray ba = file.readAll();//file.readLine(5);//读4个字符
        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();//如"test.txt"
    qDebug() << info.suffix();//后缀名(如txt)
    qDebug() << info.size();
}

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

    QString file("C:/Users/SantaClaus/Desktop/test.txt");

    write(file);

    read(file);

    info(file);

    return a.exec();
}

4. Qt中的临时文件操作类:QTemporaryFile

(1)安全地创建一个全局唯一的临时文件(被存放在系统的临时文件目录下)

(2)当对象销毁时对应的临时文件将被删除

(3)临时文件的打开方式己被指定为:QIODevic::ReadWrite

(4)临时文件继承于QFile,常用于大数据传据或者进程间通信的场合。

【编程实验】临时文件的使用

//32-2.pro

技术分享
QT += core
QT -= gui

CONFIG += c++11

TARGET = 32-2
CONFIG += console
CONFIG -= app_bundle

TEMPLATE = app

SOURCES += main.cpp
View Code

//main.cpp

#include <QCoreApplication>
#include <QTemporaryFile>
#include <QFileInfo>
#include <QDebug>

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

    QTemporaryFile tempFile; //无须指定路径(保存在系统临时文件夹中)
                             //文件名也不必指定,是个临时的文件名
    if(tempFile.open())
    {
        tempFile.write("SantaClaus");
        tempFile.close();
    }

    tempFile.open();
    QByteArray ba = tempFile.readAll();
    QString s(ba);

    qDebug() << s;

    QFileInfo info(tempFile);

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

    return a.exec();
}

/*输出结果:
"SantaClaus"
true
"C:/Users/SantaClaus/AppData/Local/Temp"
"32-2.Hp7352"
*/

5. 小结

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

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

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

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

(5)Qt中提供了临时文件操作类:QTemporaryFile

第32课 Qt中的文件操作

标签:

原文地址:http://www.cnblogs.com/5iedu/p/5762401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!