详解QDir类的使用

之前讲读写文件的文章,有涉及部分QDir的使用,讲解感觉不够全面,特此增加一篇。
QDir 是 Qt 框架中用于操作文件和目录的类,它提供了跨平台的文件系统访问接口,可以进行目录遍历、文件查找、创建、删除、移动等操作。以下是对 QDir 的详细使用说明及其 C++ 代码示例:

QDir 的主要功能与方法

  1. 目录操作

    • 创建目录mkdir()mkpath() 创建单级或多级目录。
    • 删除目录rmdir() 删除空目录,removeRecursively() 删除包含文件和子目录的非空目录。
    • 重命名或移动目录rename()
  2. 目录信息获取

    • 当前目录currentPath() 获取当前工作目录,setCurrent() 设置当前工作目录。
    • 目录属性exists()isReadable()isWritable()isAbsolute() 等方法检查目录的各种属性。
    • 目录内容entryList()entryInfoList() 获取目录内文件和子目录列表,可设置过滤条件和排序方式。
  3. 文件操作(与 QFile 类似,但基于目录上下文):

    • 文件查找entryList()entryInfoList()findFiles()findChildren() 查找特定文件或子目录。
    • 文件操作remove() 删除文件,rename() 重命名文件。
  4. 遍历目录

    • 迭代器:使用 QDirIterator 对目录进行深度优先或广度优先遍历。

QDir 使用 C++ 代码示例

#include <QDir>
#include <QFileInfo>
#include <QTextStream>
#include <QStandardPaths>
#include <QFile>
#include <QMessageBox>int main(int argc, char *argv[]) {// 示例1:获取并打印当前工作目录QDir currentDir = QDir::current();qDebug() << "Current directory: " << currentDir.path();// 示例2:创建多级目录QString newDirPath = "/path/to/new/directory";if (QDir().mkpath(newDirPath)) {qDebug() << "Directory created: " << newDirPath;} else {qDebug() << "Failed to create directory!";}// 示例3:列出指定目录下的所有文件和子目录(不递归)QDir dir("/path/to/some/directory");QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);foreach (const QString &entry, entries) {qDebug() << entry;}// 示例4:按大小排序列出目录下的所有文件,并显示详细信息QDir dirWithDetails("/path/to/some/directory");dirWithDetails.setSorting(QDir::Size | QDir::Reversed);QFileInfoList fileInfoList = dirWithDetails.entryInfoList(QDir::Files);foreach (const QFileInfo &info, fileInfoList) {qDebug() << "Name: " << info.fileName();qDebug() << "Size: " << info.size();qDebug() << "IsDir: " << info.isDir();qDebug() << "Last modified: " << info.lastModified().toString();qDebug() << "";}// 示例5:在用户文档目录下创建一个新文件并写入文本QString userDocsPath = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation);QFile newFile(userDocsPath + "/example.txt");if (newFile.open(QIODevice::WriteOnly | QIODevice::Text)) {QTextStream out(&newFile);out << "This is an example text written to a file in the Documents folder.";newFile.close();QMessageBox::information(nullptr, "File Created", "Example file was successfully created.");} else {QMessageBox::critical(nullptr, "Error", "Failed to create or write to the example file.");}return 0;
}

以上代码示例包含了以下几个 QDir 使用场景:

  • 获取并打印当前工作目录。
  • 创建多级目录。
  • 列出指定目录下的所有文件和子目录(不递归)。
  • 按大小排序列出目录下的所有文件,并显示详细信息。
  • 在用户文档目录下创建一个新文件并写入文本。

这些示例涵盖了 QDir 类的基本操作,包括目录创建、查询、文件操作等。在实际项目中,您可以根据具体需求灵活运用 QDir 提供的各种方法进行文件系统操作。如果需要更复杂的功能,如深度优先或广度优先遍历目录树,可以结合使用 QDirIterator 类。

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

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

相关文章

vu3+vite+supermap(超图)实现可视域分析

<template><div class="dialog-draggable"><el-dialog draggable destroy-on-close v-if="changeRangeVisibility" :modal="false" v-model="changeRangeVisibility"title="可视域分析" width="24%&quo…

科技感画册制作方法,视觉效果直接拉满

随着科技的不断进步&#xff0c;科技感画册制作也变得更加精彩和引人注目。通过巧妙地运用先进的设计工具和技术&#xff0c;以及结合创新的视觉元素&#xff0c;可以轻松地将画册的视觉效果直接拉满。 那你想知道怎么制作吗&#xff1f;现在我来教你这个方法吧&#xff0c;方法…

tomcat类加载机制

Tomcat是一个流行的开源的Java Servlet容器&#xff0c;用于部署和运行Java Web应用程序。在Tomcat中&#xff0c;类加载机制是非常重要的&#xff0c;它决定了应用程序中的类是如何被加载和管理的。 Tomcat的类加载机制遵循了Java的类加载机制&#xff0c;但也有一些特殊的地…

jni,android

Windows下JNI的使用教程 - sysu_huangwei - 博客园 (cnblogs.com) JNI的使用大致有以下4个步骤&#xff1a; 一、在Java中写native方法 二、用javah命令生成C/C头文件 三、写对应的C/C程序实现头文件中声明的方法&#xff0c;并编译成库文件 四、在Java中加载这个库文件并使用…

六、新闻主题分类任务

以一段新闻报道中的文本描述内容为输入&#xff0c;使用模型帮助我们判断它最有可能属于哪一种类型的新闻&#xff0c;这是典型的文本分类问题。我们这里假定每种类型是互斥的&#xff0c;即文本描述有且只有一种类型&#xff0c;例如一篇新闻不能即是娱乐类又是财经类&#xf…

JavaScript教程(十七)--- 模块化

JavaScript 模块 这篇指南会给你入门 JavaScript 模块的全部信息。 模块化的背景 JavaScript 程序本来很小——在早期&#xff0c;它们大多被用来执行独立的脚本任务&#xff0c;在你的 web 页面需要的地方提供一定交互&#xff0c;所以一般不需要多大的脚本。过了几年&…

企业Linux常见用户命令/补充Linux文件系统删除原理/userdel(故障原理/etc/skel)详谈-9628字

想提高自己想拿20k以上冲冲冲&#xff01;&#xff01;&#xff01;&#xff0c;想要从0 学习到linux架构师可以关注小编专栏 本来都很卷&#xff0c;你还不努力&#xff0c;想拿高薪&#xff0c;付出行动! linux难点第一阶段非常难 1.命令多复杂&#xff08;大家抓不住重点&am…

Python爬虫与数据可视化论文课题免费领取咨询

引言 作为一名在软件技术领域深耕多年的专业人士&#xff0c;我不仅在软件开发和项目部署方面积累了丰富的实践经验&#xff0c;更以卓越的技术实力获得了&#x1f3c5;30项软件著作权证书的殊荣。这些成就不仅是对我的技术专长的肯定&#xff0c;也是对我的创新精神和专业承诺…

boot https ssl

生成命令&#xff1a; keytool -importkeystore -srckeystore D:\sslTest.keystore -destkeystore D:\sslTest.keystore -deststoretype pkcs12keytool -genkeypair -alias "sslTestKey" -keyalg "RSA" -keystore "D:\sslTest.keystore"yml: s…

鸿蒙ArkTS小短剧开源项目进行中

鸿蒙小短剧开源项目进行中 短剧项目名称&#xff1a;CCShort-TV 短剧项目名称&#xff1a;CCShort-TV 使用ArtTS语言&#xff0c;API9以上&#xff0c;HarmonyOS系统的短剧开源代码&#xff0c;使用GSYVideoPlayer作为核心播放器的小短剧。主要以ArkTS&#xff0c;ArkUI编写为…

RISCV指令集体系简读之RV32M

RV32M向RV32I中添加了整数乘法和除法指令&#xff1b; RV32M具有有符号和无符号整数的除法指令&#xff1a;divide(div)和divide unsigned(divu)&#xff0c;它们将 商放入目标寄存器。在少数情况下&#xff0c;程序员需要余数而不是商&#xff0c;因此RV32M提供 remainder(rem…

使用IT-Tools+Cpolar在Windows搭建自己的IT工具箱并实现远程在线使用

文章目录 1. 使用Docker本地部署it-tools2. 本地访问it-tools3. 安装cpolar内网穿透4. 固定it-tools公网地址 本篇文章将介绍如何在Windows上使用Docker本地部署IT- Tools&#xff0c;并且同样可以结合cpolar实现公网访问。 在前一篇文章中我们讲解了如何在Linux中使用Docker搭…

协程:轻量级多线程编程的解决方案

文章目录 一、引入二、概念1、什么是协程2、轻量级怎么理解&#xff1f;为什么快&#xff1f;3、用途4、信息交换方式5、协程和线程的比较6、各语言对协程的支持 三、Kilim1、是什么2、原理 四、实践案例1、打印文字案例2、试试能创建多少个任务1&#xff09;多线程2&#xff0…

MercadoLibre(美客多)入仓预约系统操作流程-自动化约号(开篇)

目录 一、添加货件信息 二、输入货件信息 三、选择发货 四、填写交货日期 五、注意事项 MercadoLibre&#xff08;美客多&#xff09;于2021年10月18号上线了新预约入仓系统&#xff0c;在MercadoLibre美客多平台上&#xff0c;新入仓预约系统是一项非常重要的功能&#x…

【Scala中的package】

Scala中的package package com.zishi.scala.a03.pack/*** 使用打包技术来解决不同包下Cat类*/ object Demo {import com.zishi._val cat new abc.Cat()val cat2 new deg.Cat() }package com.zishi.abc {class Cat {} }package com.zishi.deg {class Cat {} }/*** 包也可以像…

JAVA基础06-面向对象,构造器,递归以及对象创建时内存分析(内含代码与练习)

面向对象的概念以及特征 概念 实质上将 "数据" 与 "行为" 的过程, 以类的形式封装起来, 一切以对象为中心语言。 面向对象的程序设计过程中有两个重要概念&#xff1a;类&#xff08;class&#xff09;和对象&#xff08;也称为实例&#xff09;。 其中…

【Css】table数据为空,以“-“形式展现

解决&#xff1a;class类名 它表示的是在一个名为class类名的元素内部&#xff0c;当该元素为空时&#xff0c;会在该元素的:before伪元素上应用一些样式。 这种写法通常用于在元素内容为空时&#xff0c;添加一些占位符或者提示文字

代码随想录算法训练营第五十五天 | 392. 判断子序列、115. 不同的子序列

代码随想录算法训练营第五十五天 | 392. 判断子序列、115. 不同的子序列 392. 判断子序列题目解法 115. 不同的子序列题目解法 感悟 392. 判断子序列 题目 解法 题解链接 自己的想法实现 class Solution { public:bool isSubsequence(string s, string t) {if(s.size() >…

20240328-1-Prophet面试题

Prophet面试题 1. 简要介绍Prophet 常见的时间序列分解方法&#xff1a; 将时间序列分成季节项 S t S_t St​&#xff0c;趋势项 T t T_t Tt​&#xff0c;剩余项 R t R_t Rt​&#xff0c;即对所有的 t ≥ 0 t≥0 t≥0 y t S t T t R t y_{t}S_{t}T_{t}R_{t} yt​St​Tt…

人员聚集监测识别摄像机

随着科技的不断发展&#xff0c;人员聚集监测识别摄像机已经成为了现代社会安全管理的重要工具。这种摄像机能够对人员聚集的情况进行实时监测和识别&#xff0c;帮助相关部门及时发现和处理潜在的安全风险。 人员聚集监测识别摄像机可以通过高清晰度的摄像头和先进的人脸识别技…