第三十二课、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

时间: 2024-10-26 23:36:52

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

第32课 Qt中的文件操作

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

第三十二课 二维数组及其定义 【项目1-2】

第三十二课  二维数组及其定义 项目一 [折腾二维数组] 创建一个5行4列的二维整型数组,通过初始化,为数组中的前两列的10个元素赋初值,然后: 通过键盘输入,使后两列的10个元素获得值: 按行序优先输出数组元素: 将所有元素值乘以3后保存在数组中: 按列序优先输出(输出的第一行是数组中的第一列--,其实输出的就是"转置"): 将数组"倒"着输出(即最后一行最后一列的最先输出,第0行第0列的最后输出): 输出数组中的所有偶数: 输出所有行列下标之和为3的倍数的元素值

Qt--软件开发流程简介、Qt中的文件操作

一.软件开发流程 Q.什么是软件开发流程?1.通过一系列步骤保证软件的顺利完成2.软件产品在生命期内的管理方法学软件开发流程的本质1.开发流程与具体技术无关2.开发流程是开发团队必须遵守的规则常见的开发流程--即兴.瀑布.增量.螺旋.敏捷等A.即兴模型1.与最终用户交流后立即开始进行开发2.没有需求分析和需求发掘的过程3.没有整体设计以及规划的过程4.没有相关软件文档,维护性差B.瀑布模型1.通过自上而下的步骤进行软件开发2.每个开发步骤都是不可逆的C.增量模型1.将系统能分解为互不重叠的子功能

2018-07-30 第三十二课

第三十二次课 shell编程(二) 目录 十五.shell中的函数 十六.shell中的数组 十七.告警系统需求分析 十八.告警系统主脚本 十九.告警系统配置文件 二十.告警系统监控项目 二十一.告警系统邮件引擎 二十二.运行告警系统 十五.shell中的函数 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段代码时直接调用这个小单元的名字即可.定义函数必须要放在最前面.定义好的函数相当于是命令. 语法格式 //name属性定义了赋予函数的唯一名称.脚本中定义的每个函数

第三十四课 Spark中任务处理的Stage划分和Task最佳位置算法

本节课的内容 1.     Job Stage的划分算法 2.     Task最佳计算位置算法 一.Stage划分算法 由于Spark的算子构建一般都是链式的,这就涉及了要如何进行这些链式计算,Spark的策略是对这些算子,鲜花分Stage,然后在进行计算. 由于数据是分布式的存储在各个节点上的,所以为了减少网络传输的开销,就必须最大化的追求数据本地性,所谓的数据本地性是指,在计算时,数据本身已经在内存中或者利用已有缓存无需计算的方式获取数据. 1.      Stage划分算法思想 (1)一

第三十二课:JSDeferred的性能提速

大家如果看了前面两课,就知道Deferred的静态方法next(next_default)是用setTimeout实现的(有浏览器最小时钟间隔).但是实现这种异步操作,可以有很多种方法.JSDeferred中,针对老版本IE,以及标准浏览器都专门使用了一些方法来实现异步操作,提高异步操作的性能提速. 首先,我们先来看下针对老版本IE的提速. Deferred.next_faster_way_readystatechange = (location.protocol == "http:"

第三十二篇:Windbg中USB2.0调试环境的搭建

2011年的时候,为了开发USB Mass storage -- UASP (USB attached SCSI Protocol)的设备驱动程序,从米国买了两个USB2.0的调试小设备(如下图,每个似乎80美刀,贼贵的东西). 主要是用来替代串口115200波特率的响应速度慢,以便解决调试效率的问题. 当时,根据WINDBG的HELP文档,而且也GOOGLE了一些网上的相关参考内容,硬是没有把USB2.0的调试环境搭建起来. 后来有一段时间,朋友要开发驱动程序,他原来一直用一台配有PCI转13

JAVA学习第三十二课(常用对象API)- 基本数据类型对象包装类

将基本数据类型(8种:int..)封装成对象的好处就是可以在对象中封装更多的功能和方法来操控该数据 常见的操作就是:用于基本数据类型与字符串之间的转换 基本数据类型对象包装类一般用于基本类型和字符串之间的转换 基本类型----->字符串 1.基本类型数值+"" 2.用string类中的valueOf(基本类型数值) 3.用Integer.ValueOf(); 字符串-->基本类型数值 1.使用包装类中的静态方法XXX  parseXXX("XXXX")比

AGG第三十二课 renderer_outline_aa更快的渲染线段算法

留给:曾经在校园奔跑时候,摔破膝盖,擦伤手掌的孩子! 1 前言 本章提供了采用新的线段渲染算法的例子,相比于已经实现的stroke管道算法,平均提高了2倍的速度,最好的情况下是2.6倍加速度.当然这种算法应用在细线上速度才会快,最好是小于2个像素. 在其他的章节中会跟conv_stroke进行效率的对比.同样的避免不了引入更多的限制,这一点可以在下面了解到.多说一句:conv_stroke是最昂贵的转换器. The rasterizer itself works much faster, bes