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.rhkb.cn/news/451699.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wpf grid 的用法

WPF中的Grid是一种布局控件&#xff0c;可用于将子控件按照行和列的方式排列。 以下是Grid控件的用法&#xff1a; 在XAML文件中&#xff0c;添加一个Grid控件&#xff1a; <Grid> </Grid>在Grid控件中&#xff0c;添加行和列定义&#xff1a; <Grid><…

Spring Cloud-Nacos版 学习理解

注册中心 Nacos 下载安装包 bin目录输入 cmd 进入命令行&#xff0c;输入startup.cmd -m standalone 启动 浏览器输入 http://127.0.0.1:8848/nacos/index.html&#xff0c;进入启动页面 账号密码均默认nacos 服务提供者 NacosProvider、服务调用者 NacosConsumer 服务提…

第五届计算机、大数据与人工智能国际会议(ICCBD+AI 2024)

第五届计算机、大数据与人工智能国际会议&#xff08;ICCBDAI 2024&#xff09;将于2024年11月1日-3日在江西景德镇召开。本届会议由景德镇陶瓷大学主办&#xff0c;西安交通大学、暨南大学、南京邮电大学、长沙学院、景德镇学院、ELSP&#xff08;爱迩思出版社&#xff09;、E…

Python Django 数据库优化与性能调优

Python Django 数据库优化与性能调优 Django 是一个非常流行的 Python Web 框架&#xff0c;它的 ORM&#xff08;对象关系映射&#xff09;允许开发者以简单且直观的方式操作数据库。然而&#xff0c;随着数据量的增长&#xff0c;数据库操作的效率可能会成为瓶颈&#xff0c…

使用 PyTorch 构建 LSTM 股票价格预测模型

目录 引言准备工作1. 训练模型&#xff08;train.py&#xff09;2. 模型定义&#xff08;model.py&#xff09;3. 测试模型和可视化&#xff08;test.py&#xff09;使用说明模型调整结论 引言 在金融领域&#xff0c;股票价格预测是一个重要且具有挑战性的任务。随着深度学习…

Linux文件操作基础

目录 Linux文件操作基础 引入 回顾C语言文件操作 系统调用接口 open函数 read函数和write函数 close函数 模拟C语言接口 文件描述符 如何理解Linux下一切皆文件 文本读写与二进制读写 Linux文件操作基础 引入 在Linux第一章提到过&#xff0c;在Linux中&#xff0…

快速创建一个vue项目并运行

前期准备工作: 1.安装node 2.安装npm 3.设置淘宝镜像 4.全局安装webpack 5.webpack 4.X 开始&#xff0c;需要安装 webpack-cli 依赖 6.全局安装vue-cli 正文开始: 1.创建项目 ,回车 vue init webpack vue-svg > Project name vue-demo 项目名称 回车 > Pro…

电脑桌面自己变成了英文Desktop,怎么改回中文

目录 前言找到Desktop查看位置查找目标修改文件名为桌面重启电脑 或 重启 Windows 资源管理器CtrlShiftEsc 打开任务管理器找到 Windows 资源管理器重启 Windows 资源管理器 查看修改结果 前言 许多人在使用电脑的时候发现&#xff0c;我们经常使用的桌面&#xff0c;不知道因为…

安卓流式布局实现记录

效果图&#xff1a; 1、导入第三方控件 implementation com.google.android:flexbox:1.1.0 2、布局中使用 <com.google.android.flexbox.FlexboxLayoutandroid:id"id/baggageFl"android:layout_width"match_parent"android:layout_height"wrap_co…

震惊!原来贡献开源代码这么简单,分分钟上手!

文章目录 前言一、什么是 Fork 和 PR&#xff1f;1. Fork&#xff08;分叉&#xff09;2. PR&#xff08;Pull Request&#xff0c;拉取请求&#xff09; 二、两种常见的贡献代码方式1. Fork 后通过 PR 提交代码2. 直接在项目分支中修改 三、如何 Fork 和发起 Pull Request&…

高效车辆管理:SpringBoot实现指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理车辆管理系统的相关信息成为必然。开发合适…

蜗牛兼职网的设计与实现(论文+源码)_kaic

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;蜗牛兼职网当然也不能排除在外。蜗牛兼职网是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c…

Unity开发Hololens项目

Unity打包Hololens设备 目录Visual Studio2019 / Visual Studio2022 远端部署设置Visual Studio2019 / Visual Studio2022 USB部署设置Hololens设备如何查找自身IPHololens设备门户Unity工程内的打包设置 目录 记录下自己做MR相关&#xff1a;Unity和HoloLens设备的历程。 Vi…

智能家居的“眼睛”:计算机视觉如何让家更智能

引言 在不远的未来&#xff0c;当我们走进家门&#xff0c;灯光自动亮起&#xff0c;空调已经调至最舒适的温度&#xff0c;甚至音乐也播放着我们最喜欢的歌曲。 这一切&#xff0c;都得益于智能家居系统的发展。而在这个系统中&#xff0c;计算机视觉技术扮演着至关重要的角色…

opencv 图像BGR三通道分离 split 与 合并 merge -python 实现

图像BGR三通道分离 split 与 合并 merge 会在图像预处理和图像增强中使用。 具体代码如下&#xff1a; #-*-coding:utf-8-*- # date:2021-03-21 # Author: DataBall - XIAN 1、将彩色图片 BGR 三通道分离&#xff08;注意观察 B、G、R 单通道图像素的明暗&#xff09;2、将3个…

Java知识巩固(六)

什么是可变长参数&#xff1f; 从 Java5 开始&#xff0c;Java 支持定义可变长参数&#xff0c;所谓可变长参数就是允许在调用方法时传入不定长度的参数。就比如下面这个方法就可以接受 0 个或者多个参数。 public static void method1(String... args) {//...... } 另外&am…

python 作业1

任务1: python为主的工作是很少的 学习的python的优势在于制作工具&#xff0c;制作合适的工具可以提高我们在工作中的工作效率的工具 提高我们的竞争优势。 任务2: 不换行 换行 任务3: 安装pycharm 进入相应网站Download PyCharm: The Python IDE for data science and we…

分享一套SpringBoot+Vue民宿(预约)系统

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue民宿(预约)系统&#xff0c;分享下嘿嘿。 项目介绍 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c…

qt QGraphicsEffect详解

一、QGraphicsEffect概述 QGraphicsEffect通过挂接到渲染管道并在源&#xff08;例如QGraphicsPixmapItem、QWidget&#xff09;和目标设备&#xff08;例如QGraphicsView的视口&#xff09;之间进行操作来更改元素的外观。它允许开发者为图形项添加各种视觉效果&#xff0c;如…

Redis——事务

文章目录 Redis 事务Redis 的事务和 MySQL 事务的区别:事务操作MULTIEXECDISCARDWATCHUNWATCHwatch的实现原理 总结 Redis 事务 什么是事务 Redis 的事务和 MySQL 的事务 概念上是类似的. 都是把⼀系列操作绑定成⼀组. 让这⼀组能够批量执行 Redis 的事务和 MySQL 事务的区别:…