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必须完全相同,如此才能将消息路由到队列中…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
VTK如何让部分单位不可见
最近遇到一个需求,需要让一个vtkDataSet中的部分单元不可见,查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行,是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示,主要是最后一个参数,透明度…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?
现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)ÿ…...

Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...

GO协程(Goroutine)问题总结
在使用Go语言来编写代码时,遇到的一些问题总结一下 [参考文档]:https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现: 今天在看到这个教程的时候,在自己的电…...