Qt文件系统操作和文件的读写
一、文件操作类概述
QIODevice:所有输入输出设备的基础类
- QFile:用于文件操作和文件数据读写的类
- QSaveFile:用于安全保存文件的类
- QTemporaryFile:用于创建临时文件的类
- QTcpSocket和QUdpSocket:分别实现了TCP和UDP的类
- QSerialPort:实现串口通信的类
- QBluetoothSocket:用于蓝牙通信的类
- QProcess:用于启动外部程序,并且可以给程序传递参数
- QBuffer:以一个QByteArray对象作为数据缓冲区,将QByteArray对象作为I/O设备来读写


二、目录和文件操作
- QCoreApplication:可提取应用程序路径、重命名等信息:QT QCoreApplication 类_qcoreapplication 退出_hongdou9a9的博客-CSDN博客
- QFile:可进行文件的复制、删除、重命名等操作
- QFileInfo:用于获取文件的各种信息,如文件的路径,基本文件名,文件名后缀,文件大小等
- QDir:用于目录i信息获取和目录操作,如新建、获取。删除目录下的文件或子目录等
- QTemporaryDir:用于创建临时目录,临时目录可在使用后自动删除
- QTemporaryFile:用于创建临时文件,临时文件可在使用后自动删除
- QFileSystenWatcher:用于监视设定的目录和文件,当所监视的目录或文件出现复制、重命名、删除等操作时会发射出出相应的信号
2.1 QCoreApplication类
QCoreApplication与应用程序信息相关的几个静态函数
| 函数原型 | 功能 |
| QString applicationDirPath() | 返回程序可执行文件所在路径 |
| QString applicationFilePath() | 返回应用程序的带有路径的完整文件名 |
| QString applicationName() | 返回应用程序名称,默认是无后缀的可执行文件名 |
| QString setApplicationName(QString &application) | 设置应用程序名称,替代默认的应用程序名称 |
| QStringList libraryPaths() | 返回一个字符串列表,其是应用程序动态加载库文件时搜索的目录列表 |
| void addLibraryPath(QString &path) | 将一个路径添加到应用程序的库搜索目录列表中 |
| void setOrganizationName(QString &orgName) | 为应用程序设置一个组织名 |
| QString OrganizationName() | 返回应用程序的组织名 |
| void exit() | 退出应用程序 |
范例:
void Dialog::on_pushButton_5_clicked()
{showbtninfo(sender());QStringList strList=QCoreApplication::libraryPaths();for(auto item:strList)ui->plainTextEdit->appendPlainText(item);ui->plainTextEdit->appendPlainText("\n");
}
2.2 QFile类
[QT_032]Qt学习之基本文件读写QFile_qfile 读取文件_天空之城8020的博客-CSDN博客
https://blog.csdn.net/kongcheng253/article/details/128756662QFile类除了可以进行文件的读写,还有一些静态函数和接口函数可用于文件操作

QFile的静态函数:
| 函数原型 | 功能 |
| bool copy(QString &fileName,QString &newName) | 复制一个文件 |
| bool rename(QString &oldName,QString &newName) | 重命名一个文件 |
| bool remove(QString &fileName) | 删除一个文件 |
| bool moveTo Trash(QString &fileName,QString *pathInTrash=nullptr) | 将一个文件移动到回收站 |
| bool exists(QString &fileName) | 判断一个文件是否存在 |
| bool link(QString &fileName,QString &linkName) | 创建文件连接,在window上就是创建快捷方式 |
| QString symLinkTarget(QString &fileName) | 返回一个链接指向的绝对文件名或路径 |
| bool setPermissions(QString&fileName, QFileDevice::Permissions permissions) | 设置一个文件的权限,权限是枚举类型QFileDevice::Permission的枚举值组合 |
| QFileDevice::Permissions permissions(QString &fileName) | 返回文件的权限 |
范例:
//静态函数copy()代码实现
void Dialog::on_pushButton_8_clicked()
{showbtninfo(sender());QString sous=ui->EditFile->text();//拿到editFile的名称QFileInfo fileinfo(sous);QString newFile=fileinfo.path()+"/"+fileinfo.baseName()+"--副本"+fileinfo.suffix();QFile::copy(sous,newFile);ui->plainTextEdit->appendPlainText("源文件:"+sous);ui->plainTextEdit->appendPlainText("副本:"+newFile+"\n");
}void Dialog::on_pushButton_11_clicked()
{//静态函数exists()showbtninfo(sender());QString sous=ui->EditFile->text();bool the=QFile::exists(sous);//调用静态函数判断源文件sous是否存在ui->plainTextEdit->appendPlainText(sous);//不管存不存在都可以输出资源名称if(the)//若资源文件存在ui->plainTextEdit->appendPlainText("存在");elseui->plainTextEdit->appendPlainText("不存在");ui->plainTextEdit->appendPlainText("\n");
}
QFile的接口函数:

范例:
void Dialog::on_pushButton_14_clicked()
{//成员函数copy()showbtninfo(sender());QString sous=ui->EditFile->text();//拿到editFile的名称QFileInfo fileinfo(sous);QString newFile=fileinfo.path()+"/"+fileinfo.baseName()+"--副本"+fileinfo.suffix();QFile file(sous);file.copy(newFile);ui->plainTextEdit->appendPlainText("源文件:"+sous);ui->plainTextEdit->appendPlainText("副本:"+newFile+"\n");
}void Dialog::on_pushButton_16_clicked()
{//成员函数exists()showbtninfo(sender());QString sous=ui->EditFile->text();QFile file(sous);bool the=file.exists(sous);//调用静态函数判断源文件sous是否存在ui->plainTextEdit->appendPlainText(sous);//不管存不存在都可以输出资源名称if(the)//若资源文件存在ui->plainTextEdit->appendPlainText("存在");elseui->plainTextEdit->appendPlainText("不存在");ui->plainTextEdit->appendPlainText("\n");
}
2.3 QFileInfo类
用于获取文件的各种信息。
常用的接口函数如下:

范例:
void Dialog::on_pushButton_115_clicked()
{//isFile()函数的实现showbtninfo(sender());QString sous=ui->EditFile->text();//先判断文件是否真的存在QFile file(sous);if(!file.exists(sous))return;QFileInfo fileinfo(sous);if(fileinfo.isFile())ui->plainTextEdit->appendPlainText(fileinfo.fileName()+"是一个文件");elseui->plainTextEdit->appendPlainText("文件不存在");
}void Dialog::on_pushButton_112_clicked()
{//birthTime()函数的实现showbtninfo(sender());QString sous=ui->EditFile->text();//拿到editFile的名称QFileInfo fileinfo(sous);QDateTime DTime=fileinfo.birthTime();ui->plainTextEdit->appendPlainText("文件创建时间为:"+DTime.toString("yyyy-MM-dd hh:mm:ss"));
}
2.4 QDir类
主要的静态函数:

部分接口函数:

需要传递QDir::Filter枚举类型的参数以获取不同的结果(枚举类型的常用取值如下)或者使用过滤器返回特定类型的文件、子目录名
- QDir::AllDirs:列出所有目录名
- QDir::Files:列出所有文件
- QDir::Drives:列出所有盘符(Unix系统下无效)
- QDir::NoDotAndDotDot:不列出特殊的符号,如".",".."
- QDir::AllEntries:列出目录下所有项目
范例:
void Dialog::on_pushButton_42_clicked()
{//静态函数drives()showbtninfo(sender());QFileInfoList drivelist=QDir::drives();//返回驱动器列表for(int i=0;i<drivelist.size();i++){ui->plainTextEdit->appendPlainText(drivelist.at(i).path());}ui->plainTextEdit->appendPlainText("\n");
}
void Dialog::on_pushButton_51_clicked()
{//mkdir()showbtninfo(sender());QString subDir="subDir1";//准备一个目录名QDir dir(ui->EditDir->text());bool ok=dir.mkdir(subDir);//在目录dir中创建一个新的目录subDir1if(ok)ui->plainTextEdit->appendPlainText("所选目录下成功新建一个目录 "+subDir+"\n");elseui->plainTextEdit->appendPlainText("目录创建失败\n");
}
相关文章:
Qt文件系统操作和文件的读写
一、文件操作类概述 QIODevice:所有输入输出设备的基础类 QFile:用于文件操作和文件数据读写的类QSaveFile:用于安全保存文件的类QTemporaryFile:用于创建临时文件的类QTcpSocket和QUdpSocket:分别实现了TCP和UDP的类…...
MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models
本文也是LLM系列相关文章,针对《MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models》的翻译。 MME:一个多模态大型语言模型的综合评估基准 摘要1 引言2 MME评估套件3 实验4 分析5 结论 摘要 多模态大语言模型(MLLM&…...
学习开发振弦采集模块的注意事项
学习开发振弦采集模块的注意事项 (三河凡科科技/飞讯教学)振弦采集模块是一种用来实时采集和处理振弦信号的电子设备,在工业、航空、医疗等领域都有广泛应用。学习开发振弦采集模块需要注意以下几点: 一、硬件选择 首先需要选择…...
抵御时代风险:高级安全策略与实践
目录 网页篡改攻击 流量攻击 数据库攻击 恶意扫描攻击 域名攻击 在今天的数字时代,网站已经成为企业、机构和个人展示信息、交流互动的重要平台。然而,随着网络攻击技术的不断进步,网站也面临着各种安全威胁。本文将探讨五种常见的网络攻…...
(3)、SpringCache源码分析
1、入口说明 @EnableCaching是开启SpringCache的一个总开关,开启时候我们的缓存相关注解才会生效,所以我们@EnableCaching开始作为入口进行分析, 2、分析@EnableCaching注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(...
如何在 Ubuntu 中安装最新的 Python 版本
动动发财的小手,点个赞吧! Python 是增长最快的主要通用编程语言。其原因有很多,例如其可读性和灵活性、易于学习和使用、可靠性和效率。 目前使用的 Python 有两个主要版本 – 2 和 3(Python 的现在和未来)࿱…...
等保测评--安全物理环境--测评方法
安全子类--物理位置选择 a)机房场地应选择在具有防震、防风和防雨等能力的建筑内; 一、测评对象 记录类文档和机房 二、测评实施 1)检查机房所在建筑物是否具有建筑物抗震设防审批文档; 2)检查机房门窗是否不存在因风导致的尘土严重; 3)检查机房是否不存在雨水渗漏…...
解决jmeter导入jmx文件报错方法
有的时候我们导入别人的jmx文件,但是在导入的时候会报错,如下图: 这是缺少jmeter插件jar包所引起的,下载对应jar包放到jmeter安装目录对应的lib/ext下就可以了。可以通过插件管理工具包下载安装,也可以直接下载对应的…...
CH32V307 开启浮点后rtthread的修改
官方版本是3.1.3,而且只有整数的,开启浮点后要做一些修改,这里问了官方并贴出来方便大家使用: 首先在mounriver开启浮点,步骤: 开启浮点:ide 开启float point->rvf, floating point abi->…...
网络面试题(172.22.141.231/26,该IP位于哪个网段? 该网段拥有多少可用IP地址?广播地址是多少?)
此题面试中常被问到,一定要会172.22.141.231/26,该IP位于哪个网段? 该网段拥有多少可用IP地址?广播地址是多少? 解题思路: 网络地址:172.22.141.192 10101100.00010110.10001101.11000000 广播…...
macOS nginx部署前端项目
1、安装nginx; brew install nginx2、配置nginx,主要配置代码,服务器代理 1、配置文件地址 根目录是 macOS 文件系统的最顶层目录。您可以在 Finder 中使用快捷键 Shift Command G,然后输入 /usr,即可直接打开 /u…...
管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——削弱——第一节 推理论证
文章目录 第七章 削弱质疑第一节 削弱-题型1-推理论证-论证为预测结果题-削弱质疑-预测-推理论证-分类1-削弱论点真题(2019-24)-削弱质疑-预测-推理论证-分类1-削弱论点真题(2019-42)-削弱质疑-预测-推理论证-分类1-削弱论点真题(2011-32)-削弱质疑-预测-推理论证-分类…...
LoRa 网络的高效自适应数据链路层架构
介绍 LoRa 是用于实现物联网的最流行的低功耗无线网络技术之一,与 Zigbee 或蓝牙等技术相比,其优点是提供远距离通信,但数据速率较低。LoRa 是一种单通道物理层技术,LoRaWAN 在此基础上实现了更复杂的多通道网络,并具有增强的功能,例如自适应数据速率。然而,LoRaWAN 依赖…...
Ubuntu软件源、pip源大全,国内网站网址,阿里云、网易163、搜狐、华为、清华、北大、中科大、上交、山大、吉大、哈工大、兰大、北理、浙大
文章目录 一、企业镜像源1、阿里云2、网易1633、搜狐镜像4、华为 二:高校镜像源1、清华源2、北京大学3、中国科学技术大学源 (USTC)4、 上海交通大学5、山东大学6、 吉林大学开源镜像站7、 哈尔滨工业大学开源镜像站8、 西安交通大学软件镜像…...
4 Python的函数
概述 在上一节,我们介绍了Python的数据类型,包括:数字、字符串、列表、元组、集合、字典等内容。在本节中,我们将介绍Python的函数。在Python中,函数是一段可以重复使用的代码块,它可以提高代码的可重用性和…...
Claude 2 国内镜像站
Claudeai是什么? Claude 2被称为ChatGPT最强劲的竞争对手,支持100K上下文对话,并且可以同时和5个文档进行对话,不过国内目前无法正常实用的,而claudeai是一个Claude 2 国内镜像站,并且免翻可用࿰…...
MySQL的基础操作
前言 对MySQL的一些基础操作做一下学习性的总结,基本上是照着视频写的。 MySQL的安装 MySQL的下载 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 配置环境变量 下载之后直接解压,…...
Dockerfile快速搭建自己专属的LAMP环境
目录 编写Dockerfile 1.文件内容需求: 2.值得注意的是centos6官方源已下线,所以需要切换centos-vault源! 3.Dockerfile内容 4.进入到 lamp 开始构建镜像 推送镜像到私有仓库 1.创建用户并添加到私有仓库:编辑编辑 2.推…...
秒懂算法│博弈论
博弈论是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的。…...
Springboot整合RabbitMQ消息中间件
spring-boot-rabbitmq–消息中间件整合 前言:RabbitMQ的各种交换机说明 1、直连交换机 生产者发布消息时必须带着routing-key,队列绑定到交换机时必须指定binding-key ,且routing-key和binding-key必须完全相同,如此才能将消息路由到队列中…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
【杂谈】-递归进化:人工智能的自我改进与监管挑战
递归进化:人工智能的自我改进与监管挑战 文章目录 递归进化:人工智能的自我改进与监管挑战1、自我改进型人工智能的崛起2、人工智能如何挑战人类监管?3、确保人工智能受控的策略4、人类在人工智能发展中的角色5、平衡自主性与控制力6、总结与…...
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
优选算法第十二讲:队列 + 宽搜 优先级队列
优选算法第十二讲:队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
