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

news/2024/5/10 22:15:16/文章来源:https://blog.csdn.net/m0_68731112/article/details/132392308

一、文件操作类概述

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博客icon-default.png?t=N6B9https://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

  2.4 QDir类

主要的静态函数:

image.png

 部分接口函数:

image.png

需要传递QDir::Filter枚举类型的参数以获取不同的结果(枚举类型的常用取值如下)或者使用过滤器返回特定类型的文件、子目录名

  • QDir::AllDirs:列出所有目录名
  • QDir::Files:列出所有文件
  • QDir::Drives:列出所有盘符(Unix系统下无效)
  • QDir::NoDotAndDotDot:不列出特殊的符号,如".",".."
  • QDir::AllEntries:列出目录下所有项目

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_536540.aspx

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

相关文章

KeilMDk软仿真设置_STM32F03C8

1、KeilMDK软仿真的价值 (1)在没有硬件的情况下进行程序的编写调试。 (2)避免频繁的下载程序,延长单片机Flash寿命。 2、软仿真配置。 (1)打开Keil工程。 (2)点击“Options for Target ***”,如下图所示。 (3)点击“Debug”。 (4)进行如下配置。 U…

BDA初级分析——SQL语句应用基础练习题

1、请检查OLYMPIC表中是否存在重复国家? SELECT Team,COUNT(*) AS 重复次数 FROM Olympic GROUP BY Team HAVING COUNT(*) > 1;SELECT COUNT(Team),COUNT(DISTINCT(Team)) FROM Olympic; 2、将OLYMPIC表中Armenia(ARM)的奖牌总数更新为14 UPDATE Olympic SET total_medals …

Go语言入门指南:基础语法和常用特性(下)

上一节,我们了解Go语言特性以及第一个Go语言程序——Hello World,这一节就让我们更深入的了解一下Go语言的**基础语法**吧! 一、行分隔符 在 Go 程序中,一行代表一个语句结束。每个语句不需要像 C 家族中的其它语言一样以分号 ;…

DSO 系列文章(3)——DSO后端正规方程构造与Schur消元

文章目录 DSO代码注释:https://github.com/Cc19245/DSO-CC_Comments

Ubuntu-Server 22.04安装详细过程-图文版

一.下载Ubuntu Server镜像,官方地址下载即可 https://ubuntu.com/download/server 乌班图镜像网址,点击下载即可 二.安装乌班图镜像,最好自己准备u盘在ISO软件内制作完成 1.选择 Install Ubuntu Server 2.选择安装语言为英语 3.安装程序更新选…

并发-并发挑战及底层实现原理笔记

并发编程挑战 上下文切换 cpu通过给每个线程分配cpu时间片实现多线程执行,时间片是cpu分配给各个线程的时间,cpu通过不断切换线程执行。线程有创建和上下文切换的开销。减少上下文切换的方方法 – 无锁并发编程,eg:将数据的id按…

会声会影和Pr哪个好?

会声会影是加拿大Corel公司制作的一款功能强大的视频编辑软件,正版英文名:Corel VideoStudio,具有图像抓取和编修功能,可以抓取,转换MV、DV、V8、TV和实时记录抓取画面文件,并提供有超过100 多种的编制功能…

[保研/考研机试] KY11 二叉树遍历 清华大学复试上机题 C++实现

题目链接: 二叉树遍历_牛客题霸_牛客网编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。题目来自【牛客题霸】https://www.nowcoder.com/share/jump/43719512169254700747…

五、Spring MVC 接收请求参数以及数据回显、乱码问题

文章目录 一、Spring MVC 接收请求参数二、Spring MVC 数据回显三、SpringMVC 返回中文乱码问题 一、Spring MVC 接收请求参数 客户端或者前端通过 URL 请求传递过来的参数,在控制器中如何接收? 1、当参数和 Controller 中的方法参数一致时,无…

设计模式之迭代器模式(Iterator)的C++实现

1、迭代器模式的提出 在软件开发过程中,操作的集合对象内部结构常常变化,在访问这些对象元素的同时,也要保证对象内部的封装性。迭代器模式提供了一种利用面向对象的遍历方法来遍历对象元素。迭代器模式通过抽象一个迭代器类,不同…

Qt安卓开发经验技巧总结V202308

01:01-05 pro中引入安卓拓展模块 QT androidextras 。pro中指定安卓打包目录 ANDROID_PACKAGE_SOURCE_DIR $$PWD/android 指定引入安卓特定目录比如程序图标、变量、颜色、java代码文件、jar库文件等。 AndroidManifest.xml 每个程序唯一的一个全局配置文件&…

多地图-RRT算法规划路径

RRT算法 %% %% 初始化 mapim2bw(imread(map2.bmp)); % bmp无损压缩图像500x500,im2bw把灰度图转换成二值图像01 source[10 10]; % 起始点位置 goal[490 490]; % 目标点位置 stepsize20; % RRT每步步长 disTh20; % 直到qnearest和目标点qgaol距离小于一个阈值 maxFailedAttemp…

通过LD_PRELOAD绕过disable_functions

LD_PRELOAD LD_PRELOAD是Linux/Unix系统的一个环境变量,它可以影响程序的运行时的链接,它允许在程序运行前定义优先加载的动态链接库。通过这个环境变量,可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖系统的函数…

微人事 部门管理 模块 (十五)

部门管理的树展示和搜索 数据展示页是个树,我们一次性把数据加载出来也可以通过点一次id加载查询出来出来子部门,我们用一次拿到说有json数据加载出来 数据不多可以用递归,数据很多就用懒加载的方式 由于子部门比较深就不适合,权…

(win系统)MSVCP100/110/120/140.dll丢失 - 解决方案

首先我们来介绍一下什么是dll dll简称动态链接库它可以节省存储空间:由于DLL可以被多个程序共享,因此可以减少磁盘空间的使用。也能提高代码重用率:通过使用DLL,我们可以将一些常用的功能封装成独立的模块,从而提高代码的重用率。…

电脑上安装,多版本node

手上有一个vue3的项目,sass配置如下图所示: 安装了Python3.10和node 16.14.0,项目能正常install 跟run。 因工作需要,收上有一个vue2的项目,sass配置如下图所示: 执行npm intsall 的时候一直报Python2找不…

第18集丨Vue脚手架的默认配置

目录 一、查看默认配置1.1 在此系统中禁止执行脚本1.2 错误解决方案1.3 执行成功生成的配置项 二、关闭语法检查 一、查看默认配置 Vue脚手架隐藏了所有 webpack 相关的配置,若想查看具体的 webpak 配置,请执行:vue inspect > output.js …

nodejs使用PassThrough流进行数据传递合并

在Node.js中,流(stream)是处理数据的强大工具,它们允许我们以流式方式处理大量数据,而不必一次性将所有数据加载到内存中。PassThrough是Node.js中的一个流类型,它在数据流传递过程中起到 无操作 的中间层&…

22.0.6 LEADTOOLS 增加了 Python 支持 -Crack

LEADTOOLS 增加了 Python 支持 Python 开发人员现在可以利用 LEADTOOLS 技术,包括识别、多媒体和成像。 2023 年 7 月 18 日 - 16:40新版本 特征 添加了完整的 Python 支持 LEADTOOLS Python 支持包括高级图像处理功能、OCR、PDF、条形码识别和表单处理,…

OpenCV图片校正

OpenCV图片校正 背景几种校正方法1.傅里叶变换 霍夫变换 直线 角度 旋转3.四点透视 角度 旋转4.检测矩形轮廓 角度 旋转参考 背景 遇到偏的图片想要校正成水平或者垂直的。 几种校正方法 对于倾斜的图片通过矫正可以得到水平的图片。一般有如下几种基于opencv的组合方…