当前位置: 首页 > news >正文

Qt-系统文件相关介绍使用(61)

目录

描述

输⼊输出设备类

打开/读/写/关闭

使用

先初始化,创建出大致的样貌

输入框设置

绑定槽函数

保存文件

打开文件

提取文件属性


描述

在C/C++ Linux 中我们都接触过关于文件的操作,当然 Qt 也会有对应的文件操作的

⽂件操作是应⽤程序必不可少的部分。Qt 作为⼀个通⽤开发库,提供了跨平台的⽂件操作能⼒。Qt提供了很多关于⽂件的类,通过这些类能够对⽂件系统进⾏操作,如⽂件读写、⽂件信息获取、⽂件复制或重命名等

输⼊输出设备类

在 Qt 中,⽂件读写的类为 QFile 。QFile 的⽗类为 QFileDevice ,QFileDevice 提供了⽂件交互操作的底层功能。 QFileDevice的⽗类是 QIODevice,QIODevice 的⽗类为 QObject ,QIODevice 是 Qt 中所有输⼊输出设备(input/output device,简称 I/O 设备)的基础类,I/O 设备就
是能进⾏数据输⼊和输出的设备,例如⽂件是⼀种 I/O 设备,⽹络通信中的 socket 是 I/O 设备,串⼝、蓝⽛等通信接⼝也是 I/O 设备,所以它们也是从 QIODevice 继承来的。Qt 中主要的⼀些I/O  设备类的继承关系如下图所⽰:

• QFile 是⽤于⽂件操作和⽂件数据读写的类,使⽤ QFile 可以读写任意格式的⽂件。
• QSaveFile 是⽤于安全保存⽂件的类。使⽤ QSaveFile 保存⽂件时,它会先把数据写⼊⼀个临时⽂件,成功提交后才将数据写⼊最终的⽂件。如果保存过程中出现错误,临时⽂件⾥的数据不会被写⼊最终⽂件,这样就能确保最终⽂件中不会丢失数据或被写⼊部分数据。在保存⽐较⼤的⽂件或复杂格式的⽂件时可以使⽤这个类,例如从⽹络上下载⽂件等。
• QTemporaryFile 是⽤于创建临时⽂件的类.使⽤函数 QTemporaryFile::open() 就能创建⼀个⽂件名唯⼀的临时⽂件,在QTemporaryFile 对象被删除时,临时⽂件被⾃动删除。
• QTcpSocket 和 QUdpSocket 是分别实现了 TCP 和 UDP 的类。
• QSerialPort 是实现了串⼝通信的类,通过这个类可以实现计算机与串⼝设备的通信。
• QBluetoothSocket 是⽤于蓝⽛通信的类。⼿机和平板计算机等移动设备有蓝⽛通信模块,笔记本电脑⼀般也有蓝⽛通信模块。通过QBluetoothSocket类,就可以编写蓝⽛通信程。如编程实现笔记本电脑与⼿机的蓝⽛通信。
• QProcess 类⽤于启动外部程序,并且可以给程序传递参数。
• QBuffer 以⼀个 QByteArray 对象作为数据缓冲区,将 QByteArray 对象当作⼀个 I/O 设备来读写 

Qt相关的继承

打开/读/写/关闭

Qt 中对这四个重要的操作进行了封装

打开

读 继承自 QFile 的父父类也就是 QIODevice 之中

写 也继承自 QFile 的父父类也就是 QIODevice 之中

关闭

关闭 也继承自 QFile 的父父类也就是 QIODevice 之中

使用

实现一个功能,左上角有一个按钮,点击按钮可以选择打开文件或者保存文件,下面的输入框

先初始化,创建出大致的样貌

输入框设置

先进行测试,信号槽是否功能正常

绑定槽函数

保存文件

图下我们已经保存下来了 

记事本打开正常 

打开文件

首先我们修改文本内容

如下,我们成功打开了文件,并且读取到了文件中的数据 

这里我们需要注意,这里只能够读取文本文件,二进制文件是读取不了的,要想读取二进制文件,需要用其他的函数去读取

提取文件属性

在Qt中 我们可以使用 QFileInfo 这个类来获取打开文件的各种属性

QFileInfo 是 Qt 提供的⼀个⽤于获取⽂件和⽬录信息的类,如获取⽂件名、⽂件⼤⼩、⽂件修改⽇期等。QFileInfo类中提供了很多的⽅法,常⽤的有:

• isDir() 检查该⽂件是否是⽬录;
• isExecutable() 检查该⽂件是否是可执⾏⽂件;
• fileName() 获得⽂件名;
• completeBaseName() 获取完整的⽂件名;
• suffix() 获取⽂件后缀名;
• completeSuffix() 获取完整的⽂件后缀;
• size() 获取⽂件⼤⼩;
• isFile() 判断是否为⽂件;
• fileTime() 获取⽂件创建时间、修改时间、最近访问时间等;

需要知道的是C++是在 C17的标准库中才引入了相关的操作

QFileInfo 里面有很多函数,文档中可以看到

 


http://www.mrgr.cn/news/49070.html

相关文章:

  • GeoScene Pro教程(009):GeoScenePro的空间参考与坐标转换
  • Python Enhancement Proposals,Python 增强提案
  • Python 列表专题:删除元素
  • 【最新华为OD机试E卷-支持在线评测】构成正方形的数量(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)
  • 使用SpringMVC搭建WEB项目时报错404的问题排查解决以及web.xml配置文件init-param行标红问题
  • docker-compose 部属netcore
  • 设计一个多环境配置管理系统的实用指南
  • 第十五章:组织保障(15.1信息和文档管理--15.2配置管理)
  • C++学习笔记----9、发现继承的技巧(一)---- 使用继承构建类(1)
  • Mysql(九) --- 事务
  • AI大师工坊文心智能体:雪季旅行者
  • (33)MATLAB信号分析之信号功率、噪声功率、与信噪比
  • 思迅孕婴童重置1001所有权限的语句
  • 麒麟操作系统:解决umount命令卸载USB存储设备时报“device is busy”错误
  • 【实时计算 Flink】DataStream作业大状态导致反压的调优原理与方法
  • C++入门基础知识110—【关于C++嵌套 if 语句】
  • 【Canvas与标牌】立入禁止标牌
  • Elasticsearch-数据索引与查询
  • SQL INNER JOIN:深入解析与实际应用
  • JavaScript可视化:探索顶尖的图表库