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

Qt文件系统操作和文件的读写

一、文件操作类概述

QIODevice:所有输入输出设备的基础类

  • QFile:用于文件操作和文件数据读写的类
  • QSaveFile:用于安全保存文件的类
  • QTemporaryFile:用于创建临时文件的类
  • QTcpSocketQUdpSocket:分别实现了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的接口函数:

image.png

 范例:

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类

 用于获取文件的各种信息。

常用的接口函数如下:

image.png

范例:

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类

主要的静态函数:

image.png

 部分接口函数:

image.png

需要传递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&#xff1a;所有输入输出设备的基础类 QFile&#xff1a;用于文件操作和文件数据读写的类QSaveFile&#xff1a;用于安全保存文件的类QTemporaryFile&#xff1a;用于创建临时文件的类QTcpSocket和QUdpSocket&#xff1a;分别实现了TCP和UDP的类…...

MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models

本文也是LLM系列相关文章&#xff0c;针对《MME: A Comprehensive Evaluation Benchmark for Multimodal Large Language Models》的翻译。 MME:一个多模态大型语言模型的综合评估基准 摘要1 引言2 MME评估套件3 实验4 分析5 结论 摘要 多模态大语言模型&#xff08;MLLM&…...

学习开发振弦采集模块的注意事项

学习开发振弦采集模块的注意事项 &#xff08;三河凡科科技/飞讯教学&#xff09;振弦采集模块是一种用来实时采集和处理振弦信号的电子设备&#xff0c;在工业、航空、医疗等领域都有广泛应用。学习开发振弦采集模块需要注意以下几点&#xff1a; 一、硬件选择 首先需要选择…...

抵御时代风险:高级安全策略与实践

目录 网页篡改攻击 流量攻击 数据库攻击 恶意扫描攻击 域名攻击 在今天的数字时代&#xff0c;网站已经成为企业、机构和个人展示信息、交流互动的重要平台。然而&#xff0c;随着网络攻击技术的不断进步&#xff0c;网站也面临着各种安全威胁。本文将探讨五种常见的网络攻…...

(3)、SpringCache源码分析

1、入口说明 @EnableCaching是开启SpringCache的一个总开关,开启时候我们的缓存相关注解才会生效,所以我们@EnableCaching开始作为入口进行分析, 2、分析@EnableCaching注解 @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Import(...

如何在 Ubuntu 中安装最新的 Python 版本

动动发财的小手&#xff0c;点个赞吧&#xff01; Python 是增长最快的主要通用编程语言。其原因有很多&#xff0c;例如其可读性和灵活性、易于学习和使用、可靠性和效率。 目前使用的 Python 有两个主要版本 – 2 和 3&#xff08;Python 的现在和未来&#xff09;&#xff1…...

等保测评--安全物理环境--测评方法

安全子类--物理位置选择 a)机房场地应选择在具有防震、防风和防雨等能力的建筑内; 一、测评对象 记录类文档和机房 二、测评实施 1)检查机房所在建筑物是否具有建筑物抗震设防审批文档; 2)检查机房门窗是否不存在因风导致的尘土严重; 3)检查机房是否不存在雨水渗漏…...

解决jmeter导入jmx文件报错方法

有的时候我们导入别人的jmx文件&#xff0c;但是在导入的时候会报错&#xff0c;如下图&#xff1a; 这是缺少jmeter插件jar包所引起的&#xff0c;下载对应jar包放到jmeter安装目录对应的lib/ext下就可以了。可以通过插件管理工具包下载安装&#xff0c;也可以直接下载对应的…...

CH32V307 开启浮点后rtthread的修改

官方版本是3.1.3&#xff0c;而且只有整数的&#xff0c;开启浮点后要做一些修改&#xff0c;这里问了官方并贴出来方便大家使用&#xff1a; 首先在mounriver开启浮点&#xff0c;步骤&#xff1a; 开启浮点&#xff1a;ide 开启float point->rvf, floating point abi->…...

网络面试题(172.22.141.231/26,该IP位于哪个网段? 该网段拥有多少可用IP地址?广播地址是多少?)

此题面试中常被问到&#xff0c;一定要会172.22.141.231/26&#xff0c;该IP位于哪个网段&#xff1f; 该网段拥有多少可用IP地址&#xff1f;广播地址是多少&#xff1f; 解题思路&#xff1a; 网络地址&#xff1a;172.22.141.192 10101100.00010110.10001101.11000000 广播…...

macOS nginx部署前端项目

1、安装nginx&#xff1b; brew install nginx2、配置nginx&#xff0c;主要配置代码&#xff0c;服务器代理 1、配置文件地址 根目录是 macOS 文件系统的最顶层目录。您可以在 Finder 中使用快捷键 Shift Command G&#xff0c;然后输入 /usr&#xff0c;即可直接打开 /u…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——削弱——第一节 推理论证

文章目录 第七章 削弱质疑第一节 削弱-题型1-推理论证-论证为预测结果题-削弱质疑-预测-推理论证-分类1-削弱论点真题(2019-24)-削弱质疑-预测-推理论证-分类1-削弱论点真题(2019-42)-削弱质疑-预测-推理论证-分类1-削弱论点真题(2011-32)-削弱质疑-预测-推理论证-分类…...

LoRa 网络的高效自适应数据链路层架构

介绍 LoRa 是用于实现物联网的最流行的低功耗无线网络技术之一,与 Zigbee 或蓝牙等技术相比,其优点是提供远距离通信,但数据速率较低。LoRa 是一种单通道物理层技术,LoRaWAN 在此基础上实现了更复杂的多通道网络,并具有增强的功能,例如自适应数据速率。然而,LoRaWAN 依赖…...

Ubuntu软件源、pip源大全,国内网站网址,阿里云、网易163、搜狐、华为、清华、北大、中科大、上交、山大、吉大、哈工大、兰大、北理、浙大

文章目录 一、企业镜像源1、阿里云2、网易1633、搜狐镜像4、华为 二&#xff1a;高校镜像源1、清华源2、北京大学3、中国科学技术大学源 &#xff08;USTC&#xff09;4、 上海交通大学5、山东大学6、 吉林大学开源镜像站7、 哈尔滨工业大学开源镜像站8、 西安交通大学软件镜像…...

4 Python的函数

概述 在上一节&#xff0c;我们介绍了Python的数据类型&#xff0c;包括&#xff1a;数字、字符串、列表、元组、集合、字典等内容。在本节中&#xff0c;我们将介绍Python的函数。在Python中&#xff0c;函数是一段可以重复使用的代码块&#xff0c;它可以提高代码的可重用性和…...

Claude 2 国内镜像站

Claudeai是什么&#xff1f; Claude 2被称为ChatGPT最强劲的竞争对手&#xff0c;支持100K上下文对话&#xff0c;并且可以同时和5个文档进行对话&#xff0c;不过国内目前无法正常实用的&#xff0c;而claudeai是一个Claude 2 国内镜像站&#xff0c;并且免翻可用&#xff0…...

MySQL的基础操作

前言 对MySQL的一些基础操作做一下学习性的总结&#xff0c;基本上是照着视频写的。 MySQL的安装 MySQL的下载 MySQL :: Download MySQL Community Server (Archived Versions)https://downloads.mysql.com/archives/community/ 配置环境变量 下载之后直接解压&#xff0c…...

Dockerfile快速搭建自己专属的LAMP环境

目录 编写Dockerfile 1.文件内容需求&#xff1a; 2.值得注意的是centos6官方源已下线&#xff0c;所以需要切换centos-vault源&#xff01; 3.Dockerfile内容 4.进入到 lamp 开始构建镜像 推送镜像到私有仓库 1.创建用户并添加到私有仓库&#xff1a;​编辑​编辑 2.推…...

秒懂算法│博弈论

博弈论是二人或多人在平等的对局中各自利用对方的策略变换自己的对抗策略,达到取胜目标的理论。博弈论是研究互动决策的理论。博弈可以分析自己与对手的利弊关系,从而确立自己在博弈中的优势,因此有不少博弈理论,可以帮助对弈者分析局势,从而采取相应策略,最终达到取胜的目的。…...

Springboot整合RabbitMQ消息中间件

spring-boot-rabbitmq–消息中间件整合 前言&#xff1a;RabbitMQ的各种交换机说明 1、直连交换机 生产者发布消息时必须带着routing-key&#xff0c;队列绑定到交换机时必须指定binding-key ,且routing-key和binding-key必须完全相同&#xff0c;如此才能将消息路由到队列中…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能&#xff0c;包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

数据库分批入库

今天在工作中&#xff0c;遇到一个问题&#xff0c;就是分批查询的时候&#xff0c;由于批次过大导致出现了一些问题&#xff0c;一下是问题描述和解决方案&#xff1a; 示例&#xff1a; // 假设已有数据列表 dataList 和 PreparedStatement pstmt int batchSize 1000; // …...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换

目录 关键点 技术实现1 技术实现2 摘要&#xff1a; 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式&#xff08;自动驾驶、人工驾驶、远程驾驶、主动安全&#xff09;&#xff0c;并通过实时消息推送更新车…...

【Linux】自动化构建-Make/Makefile

前言 上文我们讲到了Linux中的编译器gcc/g 【Linux】编译器gcc/g及其库的详细介绍-CSDN博客 本来我们将一个对于编译来说很重要的工具&#xff1a;make/makfile 1.背景 在一个工程中源文件不计其数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;mak…...