【QT】 QFileQFileInfo文件操作

很高兴在雪易的CSDN遇见你 ,给你糖糖

欢迎大家加入雪易社区-CSDN社区云 


前言

本文分享QT对文件的操作技术,希望对各位小伙伴有所帮助!

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的点赞就是我的动力(^U^)ノ~YO

目录

前言

1. QFile构造函数

2. QFile常用函数

3. 实操

        》创建并打开文件.

        》判断文件是否存在.

        》拷贝文件.

        》给文件重命名

        》获取用户对指定文件的权限,是否可读

        》写入文件

        》读取文件数据

        》删除文件

        》获取文件夹下所有文件

        》获取文件夹及子文件夹下所有文件

        》获取文件夹下所有子文件夹

结论:


1. QFile构造函数

QFile(const QString & name)
QFile(QObject * parent)
QFile(const QString & name, QObject * parent)

2. QFile常用函数

                                    函数名                                                         功能
                                      copy()                                                      复制文件
                                     exists()                                               检查文件是否存在
                                      open()                                                      打开文件
                                    remove()                                                      删除文件
                                    rename()                                                    修改文件名
                                 setFileName()                                                    设置文件名
                                       size()                                                      文件大小
                                       pos()                                              文件光标当前位置
                                      seek()                                              设置文件光标位置
                                     atEnd()                                           判断当前是否为文件尾
                                      read()                                                  读取文件内容
                                     close()                                                      关闭文件

        》文件打开模式 

                  模式               值 描述
    QIODevice::NotOpen          0x0000不打开
    QIODevice::ReadOnly          0x0001 只读方式
    QIODevice::WriteOnly          0x0002 只写方式,如果文件不存在则会自动创建文件
    QIODevice::ReadWriteReadOnly | WriteOnly读写方式
    QIODevice::Append          0x0004此模式表明所有数据写入到文件尾
    QIODevice::Truncate          0x0008 打开文件之前,此文件被截断,原来文件的所有数据会丢失
    QIODevice::Text          0x0010读的时候,文件结束标志位会被转为’\n’;写的时候,文件结束标志位会被转为本地编码的结束为,例如win32的结束位’\r\n’
    QIODevice::UnBuffered          0x0020                                                        不缓存

3. 实操

        》创建并打开文件.

//初始化时加载文件路径
QFile file("F:/test/xxx.txt");
//以读写的方式打开文件,成功返回true,失败返回false
//想用其他方式打开文件,请看上面的文件打开模式
bool ok = file.open(QIODevice::ReadWrite);
//如果文件不存在,则创建并打开该文件


        》判断文件是否存在.

//判断指定文件是否存在.也可以用来判断在指定路径下是否有文件和你将要创建的文件重名.
//存在返回true,不存在返回false
bool exist = QFile::exists("F:/test/xxx.txt");


        》拷贝文件.

//把D盘里的xxx.txt拷贝到到F盘,命名为sss.txt
//拷贝成功返回true,失败返回false
bool ok = QFile::copy("D:/xxx.txt", "F:/sss.txt");


        》给文件重命名

QFile file("F:/xxx.txt");
bool ok = file.rename("F:/sss.txt"); 
//重命名成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt", "F:/sss.txt");


        》获取用户对指定文件的权限,是否可读

QFlags<QFileDevice::Permission> power = QFile::permissions("F:/xxx.txt"); 
//判断文件所有者是否可读
if (power.testFlag(QFile::ReadOwner))qDebug("Can Read!");

        》写入文件

//定义文件内容字符串
QString str= "写入文件的内容";
QFile file("F:/xxx.txt"); 
//打开文件,不存在则创建
file.open(QIODevice::ReadWrite | QIODevice::Text);
//写入文件需要字符串为QByteArray格式
file.write(str.toUtf8());
file.close();


        》读取文件数据

//先打开文件
QFile file("F:/xxx.txt");
file.open(QIODevice::ReadOnly | QIODevice::Text);//使用QTextStream一行一行读取文件
QTextStream in(&file);
while (!in.atEnd())
{QString line = in.readLine();      //整行读取qDebug() << line;
}


        》删除文件

QFile file("F:/xxx.txt");
bool ok = file.remove();
//删除成功返回true,失败返回false
//也可以直接调用
bool ok = QFile::remove("F:/xxx.txt");


        》获取文件夹下所有文件

QDir *dir = new QDir("F:/");
QStringList filters;
filters << "*.png" << "*.jpg" << "*.bmp";          //过滤器,过滤你想要的文件后缀
//用链表保存过滤的文件名
QList<QFileInfo> *fileInfo = new QList<QFileInfo>(dir->entryInfoList(filters));//获取文件数目、文件名称
for(int i = 0; i < fileInfo->count(); i++)
{//QFileInfo(路径名的Qstring字符串).filename可以直接取到路径中的文件名qDebug() << fileInfo->at(i).fileName();}

        》获取文件夹及子文件夹下所有文件

void getAllFiles(const QString& foldPath, QStringList& folds, const QStringList& formats) {if (formats.size() < 1){QDirIterator it(foldPath, QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);while (it.hasNext()) {it.next();QFileInfo fileInfo = it.fileInfo();folds << fileInfo.absoluteFilePath();}}else{QDirIterator it(foldPath, formats, QDir::Files | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);while (it.hasNext()) {it.next();QFileInfo fileInfo = it.fileInfo();folds << fileInfo.absoluteFilePath();}}
}

        》获取文件夹下所有子文件夹

void getAllFolds(const QString& foldPath, QStringList& folds)
{QDirIterator it(foldPath, QDir::Dirs | QDir::NoDotAndDotDot, QDirIterator::Subdirectories);while (it.hasNext()) {it.next();QFileInfo fileInfo = it.fileInfo();if(fileInfo.isFile()){folds << fileInfo.absoluteFilePath();}}
}

结论:

        本文主要介绍对文件的操作!

感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步!

你的赞赏是我的最最最最大的动力(^U^)ノ~YO

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

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

相关文章

Vue3 —— watchEffect 高级侦听器

该文章是在学习 小满vue3 课程的随堂记录示例均采用 <script setup>&#xff0c;且包含 typescript 的基础用法 前言 Vue3 中新增了一种特殊的监听器 watchEffect&#xff0c;它的类型是&#xff1a; function watchEffect(effect: (onCleanup: OnCleanup) > void,o…

go_并发编程(1)

go并发编程 一、 并发介绍1&#xff0c;进程和线程2&#xff0c;并发和并行3&#xff0c;协程和线程4&#xff0c;goroutine 二、 Goroutine1&#xff0c;使用goroutine1&#xff09;启动单个goroutine2&#xff09;启动多个goroutine 2&#xff0c;goroutine与线程3&#xff0…

通过 HttpClient 发送请求

文章目录 1. 引入 maven 依赖2. 发送 GET 方式的请求3. 发送 POST 方式的请求 1. 引入 maven 依赖 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId> </dependency>2. 发送 GET 方式的请求…

C++类型转换

目录 隐式类型转换 转型方向 整型提升和截断 显示转换的种类 C风格的强制类型转换 C风格的函数样式转换 隐式类型转换 转型方向 隐式类型转换&#xff0c;又称自动转换、算数转换&#xff0c;是由编译器自动完成的类型转换称为隐式类型转换。自动转换的原则为&#xff…

Leaflet入门,Leaflet如何实现vue双向绑定数据添加到图片标记物到地图上,动态根据vue数据更新到地图上以及鼠标经过标记物显示提示框

前言 本章使用Leaflet的vue2-leaflet或者vue-leaflet插件方式实现vue数据绑定地图数据,实现地图标记物与vue数据的双向联动更新,以及鼠标经过标记物显示提示框功能。 实现效果演示 vue如何使用Leaflet vue2如何使用:《Leaflet入门,如何使用vue2-leaflet实现vue2双向绑定…

GaussDB数据库SQL系列-子查询

目录 一、前言 二、GaussDB SQL子查询表达式 1、EXISTS/NOT EXISTS 2、IN/NOT IN 3、ANY/SOME 4、ALL 三、GaussDB SQL子查询实验示例 1、创建实验表 2、EXISTS/NOT EXISTS示例 3、IN/NOT IN 示例 4、ANY/SOME 示例 5、ALL示例 四、注意事项及建议 五、小结 一、…

msvcp110.dll是什么意思,msvcp110.dll丢失的解决方法

装好软件或游戏之后&#xff0c;一打开就跳出各种报错信息的情况小伙伴一定见过&#xff0c;其中缺少各种msvcp110.dll文件最常见。小伙伴们一定奇怪&#xff0c;用得好好的电脑&#xff0c;怎么会缺文件呢&#xff1f;为啥其他游戏/应用就没事呢&#xff1f;其实这些“丢失”的…

LVS负载均衡群集部署(LVS-NAT模型实例)

一、集群 1.1集群的含义 Cluster&#xff0c;集群、群集,为解决某个特定问题将多台计算机组合起来形成的单个系统。 由多台主机构成&#xff0c;但对外只表现为一个整体。 1.2群集的三种类型 1.2.1负载均衡群集 LB&#xff1a; Load Balancing&#xff0c;负载均衡&#x…

国产化系统中遇到的视频花屏、卡顿以及延迟问题的记录与总结

目录 1、国产化系统概述 1.1、国产化操作系统与国产化CPU 1.2、国产化服务器操作系统 1.3、当前国产化系统的主流配置 2、视频解码花屏与卡顿问题 2.1、视频解码花屏 2.2、视频解码卡顿 2.3、关于I帧和P帧的说明 3、国产显卡处理速度慢导致图像卡顿问题 3.1、视频延…

【C++类和对象】类有哪些默认成员函数呢?(下)

文章目录 一、类的6个默认成员函数二、日期类的实现2.1 运算符重载部分2.2 日期之间的运算2.3 整体代码1.Date.h部分2. Date.cpp部分 三. const成员函数四. 取地址及const取地址操作符重载扩展内容 总结 ヾ(๑╹◡╹)&#xff89;" 人总要为过去的懒惰而付出代价ヾ(๑╹◡…

【Rust】Rust学习 第十二章一个 I/O 项目:构建一个命令行程序

本章既是一个目前所学的很多技能的概括&#xff0c;也是一个更多标准库功能的探索。我们将构建一个与文件和命令行输入/输出交互的命令行工具来练习现在一些你已经掌握的 Rust 技能。 Rust 的运行速度、安全性、单二进制文件输出和跨平台支持使其成为创建命令行程序的绝佳选择…

2023上半年京东手机行业品牌销售排行榜(京东数据平台)

后疫情时代&#xff0c;不少行业都迎来消费复苏&#xff0c;我国智能手机市场在今年上半年也实现温和的复苏&#xff0c;手机市场的出货量回暖。 根据鲸参谋平台的数据显示&#xff0c;2023年上半年&#xff0c;京东平台上手机的销量为2830万&#xff0c;环比增长约4%&#xf…

sql中union all、union、intersect、minus的区别图解,测试

相关文章 sql 的 join、left join、full join的区别图解总结&#xff0c;测试&#xff0c;注意事项 1.结论示意图 对于intersect、minus&#xff0c;oracle支持&#xff0c;mysql不支持&#xff0c;可以变通&#xff08;in或exists&#xff09;实现 2.创建表和数据 -- 建表…

Android Socket使用TCP协议实现手机投屏

本节主要通过实战来了解Socket在TCP/IP协议中充当的是一个什么角色&#xff0c;有什么作用。通过Socket使用TCP协议实现局域网内手机A充当服务端&#xff0c;手机B充当客户端&#xff0c;手机B连接手机A&#xff0c;手机A获取屏幕数据转化为Bitmap&#xff0c;通过Socket传递个…

Linux——KVM虚拟化

目录标题 虚拟化技术虚拟化技术发展案例KVM简介KVM架构及原理KVM原理KVM虚拟化架构/三种模式虚拟化前、虚拟化后对比KVM盖中盖套娃实验 虚拟化技术 通过虚拟化技术将一台计算机虚拟为多台逻辑计算机&#xff0c;在一台计算机上同时运行多个逻辑计算机&#xff0c;同时每个逻辑…

ValueError: check_hostname requires server_hostname

ValueError: check_hostname requires server_hostname 可能是代理的问题&#xff0c;在pip下载库的时候如果之前电脑连过梯子&#xff0c;就会出现。 这个时候就算关掉梯子也无法解决这个错误。 下面是解决方法 右键网络&#xff0c;打开设置&#xff0c;代理 点击手动设置代…

excel 之 VBA

1、excel和VBA 高效办公&#xff0c;把重复性的工作写成VBA代码&#xff08;VB代码的衍生物&#xff0c;语法和VBA相同&#xff09;。 首先打开开发工具模式&#xff0c;如果没有选显卡&#xff0c;需要手动打开 打开程序编辑界面 快捷键 altF11一般操作 程序调试&#xf…

hive--给表名和字段加注释

1.建表添加注释 CREATE EXTERNAL TABLE test(loc_province string comment 省份,loc_city string comment 城市,loc_district string comment 区,loc_street string comment 街道,)COMMENT 每日数据处理后的表 PARTITIONED BY (par_dt string) ROW FORMAT SERDEorg.apache.had…

《离散数学及其应用(原书第8版)》ISBN978-7-111-63687-8 第11章 11.1.3 树的性质 节 第664页的例9说明

《离散数学及其应用&#xff08;原书第8版&#xff09;》ISBN978-7-111-63687-8 第11章 11.1.3 树的性质 节 第664页的定理3的引申 定理3 带有i个内点的m叉树含有nmi1个顶点 见本人博文 内点定义不同的讨论 如果对于一个m叉正则树&#xff0c;即任意分支节点的儿子恰好有m个&am…

Hlang社区-前端社区宣传首页实现

文章目录 前言页面结构固定钉头部轮播JS特效完整代码总结前言 这里的话,博主其实也是今年参与考研的大军之一,所以的话,是抽空去完成这个项目的,当然这个项目的肯定是可以在较短的时间内完成的。 那么废话不多说,昨天也是干到1点多,把这个首页写出来了。先看看看效果吧:…