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");
}
void Dialog::on_pushButton_53_clicked()
{//setpath()showbtninfo(sender());QString curDir=QDir::currentPath();QDir lastDir(curDir);ui->plainTextEdit->appendPlainText("选择目录之前:"+lastDir.absolutePath()+"\n");QString aDir=QFileDialog::getExistingDirectory(this,"选择一个目录",curDir,QFileDialog::ShowDirsOnly);if(aDir.isEmpty())return;ui->EditDir->setText(aDir);//将打开的文件名写入到editDir中lastDir.setPath(aDir);ui->plainTextEdit->appendPlainText("选择目录之后:"+lastDir.absolutePath());ui->plainTextEdit->appendPlainText("\n");
}

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

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

相关文章

解决问题:C++ [某变量名] was not declared in this scope

目录 程序报错的问题 查看程序问题 发现错误代码 错误原因 修改代码 再次运行 程序报错的问题 查看程序问题 发现错误代码 cout<<c; 错误原因 c 这个变量还没有在这个程序中定义 修改代码 加上 int c; 再次运行

使用Dockerfile部署java项目

1、移动java包到创建的目录下 2、编写Dockerfile文件 在同一目录下使用如下命令创建文件 touch Dockerfile 文件内容如下&#xff1a; #依赖的父镜像 FROM java:8 #作者 MAINTAINER maxurui #jar包添加到镜像中 ADD springboot3-0.0.1-SNAPSHOT.jar springboot3-0.0.1-SNAPSHO…

SOPC之NIOS Ⅱ实现电机转速PID控制(调用中断函数)

通过FPGA开发板上的NIOS Ⅱ搭建电机控制的硬件平台&#xff0c;包括电机正反转、编码器的读取&#xff0c;再通过软件部分实现PID算法对电机速度进行控制&#xff0c;使其能够渐近设定的编码器目标值。 一、问题与改进 SOPC之NIOS Ⅱ实现电机转速PID控制_STATEABC的博客-CSDN…

k8s-ingress-context deadline exceeded

报错&#xff1a; rancher-rke-01:~/rke # helm install rancher rancher-latest/rancher --namespace cattle-system --set hostnamewww.rancher.local Error: INSTALLATION FAILED: Internal error occurred: failed calling webhook "validate.nginx.ingress.kube…

C语言刷题训练DAY.13

1.有序序列判断 解题思路&#xff1a; 这里我们先看代码&#xff0c;我们定义了一个flag1和flag2&#xff0c;它的作用主要就是判断是不是升序&#xff0c;具体怎么使用的&#xff0c;我为大家画图展示。 解题代码&#xff1a; #include<stdio.h> int main() {int n 0;…

实验一 ubuntu 网络环境配置

ubuntu 网络环境配置 【实验目的】 掌握 ubuntu 下网络配置的基本方法&#xff0c;能够通过有线网络连通 ubuntu 和开发板 【实验环境】 ubuntu 14.04 发行版FS4412 实验平台 【注意事项】 实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行&#xff0c;以“#”开头的…

改进YOLO系列:6.添加ECA注意力机制

添加ECA注意力机制 1. ECA注意力机制论文2. ECA注意力机制原理3. ECA注意力机制的配置3.1common.py配置3.2yolo.py配置3.3yaml文件配置1. ECA注意力机制论文 论文题目:ECA-Net: Efficient Channel Attention for Deep Convolutional Neural Networks 论文链接:ECA-N…

[国产MCU]-W801开发实例-按键与GPIO输入

按键与GPIO输入 文章目录 按键与GPIO输入1、硬件准备2、软件准备3、驱动实现4、驱动测试在前面的文章中,我们成功点亮了LED,同时也知道W801的GPIO是可软件配置的。在这里,将详细介绍如何通过按键控制LED。 1、硬件准备 W801开发板一块微动开关一个10K电阻一个导线若干1uF电容…

微服务参数透传实现

说明&#xff1a;在微服务架构中&#xff0c;用户身份经网关验证后&#xff0c;我们可以将用户信息&#xff0c;如ID加入到请求头上。后面的微服务中&#xff0c;可以设置一个拦截器&#xff0c;拦截请求&#xff0c;获取请求头上的用户ID&#xff0c;加入到ThreadLocal中。 最…

深入解析:树结构及其应用

文章目录 学习树的基本概念理解树的遍历方式学习堆和优先队列的应用案例分析&#xff1a;使用堆进行Top K元素的查找结论 &#x1f389;欢迎来到数据结构学习专栏~深入解析&#xff1a;树结构及其应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&#x1f379;✨博客主页&#xff1a;IT陈…

Redis三种持久化方式详解

一、Redis持久性 Redis如何将数据写入磁盘 持久性是指将数据写入持久存储&#xff0c;如固态磁盘&#xff08;SSD&#xff09;。Redis提供了一系列持久性选项。其中包括&#xff1a; RDB&#xff08;快照&#xff09;&#xff1a;RDB持久性以指定的时间间隔执行数据集的时间点…

Stable Diffusion 系列教程 | 如何获得更高清优质的AI绘画

目录 1 高清修复 1.1 原理 1.2 基本操作 1.3 优缺点 2 UpScale 放大脚本 2.1 原理 2.2 基本操作 2.3 优缺点 3 附加功能放大 3.1 原理 3.2 基本操作 3.3 优缺点 优化出图质量&#xff0c;产出更高清&#xff0c;分辨率更高&#xff0c;更有细节的绘画作品呢&#x…

Nexus 如何配置匿名用户访问一个仓库

现在有这样一个需求&#xff0c;我们需要匿名用户访问 Nexus 的一个公共仓库。 设置 Roles 在满足这个需求之前&#xff0c;我们需要设置一个 Roles。 Role 的名字是可以随填写的。 这里关键的问题在你需要访问的仓库的 View 的权限需要设置 Read 和 Browse 这 2 个权限。 如…

08-信息收集-架构、搭建、WAF等

信息收集-架构、搭建、WAF等 信息收集-架构、搭建、WAF等一、前言说明二、CMS识别技术三、源码获取技术四、架构信息获取技术五、站点搭建分析1、搭建习惯-目录型站点2、搭建习惯-端口类站点3、搭建习惯-子域名站点4、搭建习惯-类似域名站点5、搭建习惯-旁注&#xff0c;c段站点…

OpenCV 中的色彩空间 (C++ / Python)

在本教程中,我们将了解计算机视觉中使用的流行色彩空间,并将其用于基于颜色的分割。我们还将分享 C++ 和 Python 的演示代码。

win10+wsl2+Ubuntu20.2+Pycharm+WSL解释器

目的&#xff1a;创建一个ubuntu系统下的python解释器&#xff0c;作为win平台下的pycharm的解释器。 这样做的好处是可以直接在win系统里操作文件&#xff0c;相比于linux方便一点&#xff0c;而且也不用对wsl的子系统进行迁移。 一、安装前准备 1. 设置-Windows更新-window…

SpringBoot项目集成ElasticSearch服务

本文已收录于专栏 《中间件合集》 目录 版本介绍背景介绍优势说明集成过程1.引入依赖2.添加配置文件3.初始化 示例说明代码结果 总结提升 版本介绍 Spring boot的版本是&#xff1a; 2.3.12   ElasticSearch的版本是&#xff1a;7.6.2 背景介绍 在我们的项目中经常会遇到对于…

Unity - 特殊文件夹

地址记录&#xff1a;https://www.cnblogs.com/zouqiang/p/6841399.html Assets Assets文件夹是unity项目中放置游戏资源的主文件夹。 该文件夹中的内容将直接反应在编辑器的Project视口中。许多系统API基于该文件夹路径。 Resources Unity允许你按需动态加载游戏资源到场景中…

Python使用pyqt5写windows桌面应用实战教程

本篇文章主要讲解,Python使用pyqt5写windows桌面应用的详细实战教程文章,主要涵盖单个界面的布局构建说明,表单构建说明,数据交互构建说明以及可直接开发的简易多界面框架实例构建说明,能够让你很快的了解pyqt在python中的使用和构建方式,快速实现一个简单的windows桌面图…

NTP相关问题

ntp协议的相关概念 ntp(时间同步协议)&#xff0c;用来在分布式时间服务器和客户端之间进行时间同步。NTP基于UDP报文进行传输&#xff0c;使用的UDP端口号是123. 使用NTP的目的是对网络内所有具有时钟的设备进行时间同步&#xff0c;是网络内所有设备的时钟保持一致&#xff0…