【QT】 QFileQFileInfo文件操作

news2024/11/24 17:01:28

很高兴在雪易的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();

}

结论:

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

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

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

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

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

相关文章

恢复已被删除,但是能然有进程调用的文件

当Linux计算机受到入侵时&#xff0c;常见的情况是日志文件被删除&#xff0c;以掩盖攻击者的踪迹。管理错误也可能导致意外删除重要的文件&#xff0c;比如在清理旧日志时&#xff0c;意外地删除了数据库的活动事务日志。有时可以通过lsof来恢复这些文件。 当进程打开了某个文…

【枚举边+MST+组合计数】CF1857G

Problem - 1857G - Codeforces 题意&#xff1a; 思路&#xff1a; 首先观察一下样例&#xff1a; 可以发现对于每一对点&#xff0c;贡献是 s - 这对点对应的环的最大边 1 那么这样就有了 n^2 的做法 然后&#xff0c;根据惯用套路&#xff0c;枚举树上的点对问题可以转…

深入解析美颜SDK:算法、效果与实现

在当今数字化社会中&#xff0c;图像处理和美化技术已经成为了许多应用领域的重要组成部分&#xff0c;尤其在视频直播领域&#xff0c;美颜技术更是无处不在。直播美颜SDK作为一种集成的软件工具包&#xff0c;为开发者和应用提供了强大的美颜功能。 一、算法原理 磨皮算法…

理解RDMA SGL

1. 前言 在使用RDMA操作之前&#xff0c;我们需要了解一些RDMA API中的一些需要的值。其中在ibv_send_wr我们需要一个sg_list的数组&#xff0c;sg_list是用来存放ibv_sge元素&#xff0c;那么什么是SGL以及什么是sge呢&#xff1f;对于一个使用RDMA进行开发的程序员来说&…

Python教程(9)——Python变量类型列表list的用法介绍

列表操作 创建列表访问列表更改列表元素增加列表元素修改列表元素删除列表元素 删除列表 在Python中&#xff0c;列表&#xff08;list&#xff09;是一种有序、可变的数据结构&#xff0c;用于存储多个元素。列表可以包含不同类型的元素&#xff0c;包括整数、浮点数、字符串等…

服务器如何防止cc攻击

对于搭载网站运行的服务器来说&#xff0c;cc攻击应该并不陌生&#xff0c;特别是cc攻击的攻击门槛非常低&#xff0c;有个代理IP工具&#xff0c;有个cc攻击软件就可以轻易对任何网站发起攻击&#xff0c;那么服务器如何防止cc攻击?请看下面的介绍。 服务器如何防止cc攻击&a…

只需要自动售货机,商业模式立马大变样!

随着互联网、大数据和人工智能的蓬勃发展&#xff0c;商业模式正以前所未有的方式融合&#xff0c;其中自动售货机作为新零售模式的一颗璀璨明珠&#xff0c;正引领着购物体验的革命。这个巧妙的结合将消费者的便利、数据的智能分析以及科技的创新融为一体&#xff0c;重新定义…

【日常积累】HTTP和HTTPS的区别

背景 在运维面试中&#xff0c;经常会遇到面试官提问http和https的区别&#xff0c;今天咱们先来简单了解一下。 超文本传输协议HTTP被用于在Web浏览器和网站服务器之间传递信息&#xff0c;HTTP协议以明文方式发送内容&#xff0c;不提供任何方式的数据加密&#xff0c;如果…

你的汽车充电桩控制板可能比你的智能手机还要智能?

你是否想过&#xff0c;你的汽车充电桩控制板可能比你的智能手机还要智能?今天我们就来聊聊这个话题。 汽车充电桩控制板的智能性让充电过程更加高效、安全。首先&#xff0c;它具备自检功能&#xff0c;就像你的手机一样&#xff0c;不仅能检查出设备的工作状态&#xff0c;还…

[杂症]PLSQL很卡

PLSQL症状如下&#xff1a; 1、PLSQL隔段时间没用再执行语句时会很卡2、就是很卡&#xff0c;干啥都卡 目前网上的方法汇总如下&#xff1a; 1、Tools >> Preferesnces >> Oracle >> Connection 打开自动连接 勾选检查连接、勾选所有会话&#xff0c;设置成…

正中优配:牛市旗手“又行了”

8月15日早盘&#xff0c;A股首要指数呈弱势盘整态势&#xff0c;截至记者发稿时&#xff0c;沪指小幅翻红&#xff0c;深证成指、创业板指依然飘绿。 中拉升&#xff1b;周一活泼的酒店、旅游板块则震荡调整&#xff1b;房地产板块盘中震荡&#xff0c;体现较弱。 “牛市旗手”…

软件测试简历撰写与优化,让你面试邀约率暴增99%!

如何撰写一份优秀的简历呢&#xff1f;&#xff1f;这是一个求职者都会遇到的问题&#xff0c;今天就来详细带大家写一份软件测试工程师职位的简历&#xff01;希望能给各位软件测试求职者一个带来帮助&#xff01; 个人简历是求职者给招聘单位发的一份简要介绍。包含自己的基本…

grafana 的 ws websocket 连接不上的解决方式

使用了多层的代理方式&#xff0c;一层没有此问题 错误 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志报错 msg“Request Completed” methodGET path/api/live/ws status403 解决方式 # allowed_origins is a comma-separated list of o…

Qt扫盲- Graphics View框架理论综述

Graphics View框架理论综述 一、概述二、Graphics View 体系结构1. The Scene2. The View3. 图元 Item 三、图形视图坐标系统1. 图元Item的坐标2. Scene Scene坐标3. View 视图坐标4. 坐标映射 四、关键特性1. 缩放和旋转2. 打印3. 拖放4. 鼠标指针和 提示5. 动画6. OpenGL渲染…

在Vscode中,使用Shift + Alt + F导致本来一行的代码变成多行,看起来贼难受

在VSCode中&#xff0c;我们经常安装各种插件&#xff0c;本人采用的时vuter插件&#xff0c;但是在使用这个插件的时候&#xff0c;我发现&#xff0c;使用Shift Alt F&#xff0c;对整个前端vue界面进行代码格式化的时候&#xff0c;本来是一行就可以展示的代码&#xff0c…

揭穿DevOps的5个谣言!

据不完全统计&#xff0c;软件故障每年都会给企业造成数十亿美元的损失&#xff0c;这也是为什么拥有一个可靠的软件交付流程是如此重要的原因&#xff0c;而DevOps能够帮助我们实现这一目标。 尽管如今DevOps如今已在大量企业中落地&#xff0c;但人们对DevOps其实存在很多误…

0基础转行产品经理可行吗?如何操作才靠谱?

在多年的产品经验中&#xff0c;遇到了很多朋友同事咨询转行做产品的可行性&#xff0c;在沟通的过程中&#xff0c;大家都普遍认为零基础转行产品&#xff0c;对于一个已经有工作经验的人来说&#xff0c;是不是需要付出很大的努力&#xff0c;之前走的路就全白费了&#xff0…

在VMware平台安装centos8.4详细图文步骤

CentOS-8 的首个发行版本。CentOS Linux 发行版本是一个稳定、高预测性、高管理性、高重复性的平台&#xff0c;它源于 Red Hat 企业级 Linux(RHEL)的源代码。你可以检阅此发行版本的官方发布。 官方中文的发行说明&#xff1a;https://wiki.centos.org/action/show/zh/Manuals…

针对低分辨率或小目标的卷积-SPDConv

针对低分辨率或小目标的卷积-SPDConv 摘要引言A New Building Block:SPD-Conv附录代码&#xff1a; 摘要 卷积神经网络在许多计算机视觉任务中取得了巨大成功。然而&#xff0c;在图像低分辨率或目标较小任务上&#xff0c;他们的性能迅速下降。在本文中&#xff0c;我们指出&…

Springboot 实践(3)配置DataSource及创建数据库

前文讲述了利用MyEclipse2019开发工具&#xff0c;创建maven工程、加载springboot、swagger-ui功能。本文讲述创建数据库&#xff0c;为项目配置数据源&#xff0c;实现数据的增删改查服务&#xff0c;并通过swagger-ui界面举例调试服务控制器 创建数据库 项目使用MySQL 8.0.…