【跟我每天学习1个QT类】QDir类 — 操作文件和目录的强大工具的类

2024-04-15 23:44

本文主要是介绍【跟我每天学习1个QT类】QDir类 — 操作文件和目录的强大工具的类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、QDir类简介

在Qt编程环境中,QDir类扮演着至关重要的角色,它作为Qt框架内对文件和目录进行操作的核心组件,为开发者提供了丰富的API来处理文件系统中的目录结构、文件搜索、路径管理等任务。QDir类设计为跨平台的,确保在Windows、Linux、macOS等各种操作系统上都能以统一的方式进行文件系统的交互。

二、成员变量

  • ``d_ptr:私有实现指针,指向一个QLibraryPrivate对象,这是Qt为了实现跨平台特性而采用的PIMPL(Pointer to Implementation)设计模式的一部分,具体实现细节对用户隐藏。

三、公有成员函数

(1)构造函数

  • QDir(const QString &path = QString(), QObject *parent = nullptr):创建一个QDir实例,可指定初始路径(默认为空字符串),表示当前工作目录。可选地,可以传入一个父对象(用于Qt的对象树管理)。
  • QDir(const QDir &dir, QObject *parent = nullptr):通过复制现有QDir对象来创建一个新的实例,继承其路径设置。

(2)路径设置与获取

  • [static] QFileInfoList QDir::drives():用于获取系统中所有可用磁盘驱动器(或称“驱动器”、“盘符”)的信息列表。
  • static void QDir::addSearchPath(const QString &prefix, const QString &path):向Qt的全局搜索路径列表中添加一个自定义的路径前缀及其对应的路径。
  • void setPath(const QString &path)设置QDir对象所代表的目录路径
  • QString path() const获取当前QDir对象所指向的目录路径
  • QString dirName() const:用于获取与当前 QDir 对象关联的目录名称
    在这里插入图片描述

(3)目录操作

  • static QString QDir::cleanPath(const QString &path):用于规范化并清理给定的文件或目录路径。
  • bool mkdir(const QString &dirName):尝试在当前路径下创建一个子目录,返回true表示成功,false表示失败。
  • bool rmdir(const QString &dirName):尝试删除指定的子目录(该目录必须为空),返回true表示成功,false表示失败。
  • bool rename(const QString &oldName, const QString &newName):重命名当前路径下的文件或目录,返回true表示成功,false表示失败。
  • bool remove(const QString &fileName):移除名为fileName的文件,成功则返回true;
  • bool removeRecursively():删除目录,包括其所有内容。
    如果成功返回true,否则返回false。
    如果无法删除文件或目录,removerecursive()会继续执行并尝试删除尽可能多的文件和子目录,然后返回false。
    如果目录已被删除,则该方法返回true(已达到预期结果)。
    注意:此函数用于删除应用程序内部的小目录(如临时目录),而不是用户可见的目录。对于用户可见的操作,建议更精确地向用户报告错误,在出现错误时提供解决方案,在删除过程中显示进度,因为这可能需要几分钟,等等。
  • void swap(QDir &other):将此QDir实例与其他QDir实例交换。这个函数非常快,从不出错。

(4)文件遍历与搜索

  • QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const:用于获取当前 QDir 对象所指目录中的文件和子目录列表

  • uint count() const:返回目录中目录和文件的总数

  • QStringList entryList(QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

  • QFileInfoList entryInfoList(QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort):返回当前目录下符合指定过滤器和排序规则的所有条目(包括文件和子目录)的信息列表。

  • QFileInfoList fileInfoList(const QStringList &nameFilters, QDir::Filters filters = QDir::NoFilter, QDir::SortFlags sort = QDir::NoSort):返回当前目录下符合指定名称过滤器、一般过滤器和排序规则的文件信息列表

(5)路径管理与转换

绝对路径对象

  • QString absoluteFilePath(const QString &fileName) const:返回fileName的绝对路径
  • QString absolutePath() const:返回当前QDir对象的绝对路径
  • QString canonicalPath() const:返回当前路径的规范形式,消除多余的“.”、“…”和符号链接。
  • bool cd(const QString &dirName):用于改变当前 QDir 对象所代表的目录位置
  • bool cdUp():改变当前QDir对象所关联的目录至其父目录,并返回一个布尔值(bool)以指示操作是否成功。相当于返回上一级目录
  • QString relativeFilePath(const QString &fileName) const:计算相对于当前路径的给定文件名的相对路径
    在这里插入图片描述
  • QString filePath(const QString &fileName) const:返回目录中一个文件的路径名称。此操作并不检查文件实际上是否存在于该目录中;如需进行存在性检查,请使用 exists() 函数。如果 QDir 对象表示的是相对路径,则返回的路径名称也将是相对的。fileName 中的冗余多重分隔符或 “.” 和 “…” 目录并不会被移除。
  • [static] QString QDir::fromNativeSeparators(const QString &pathName):使用 ‘/’ 作为文件分隔符返回 pathName。例如,在 Windows 平台上fromNativeSeparators(“c:\winnt\system32”) 将返回 “c:/winnt/system32”。
  • bool makeAbsolute():将当前目录转换为绝对路径,如果已经是绝对路径,就不用转换,如果转换成功,就返回true。
  • QString relativeFilePath(const QString &fileName) const:返回相对于目录的路径fileName。
  • [static] QStringList QDir::searchPaths(const QString &prefix):返回前缀的搜索路径。

(6)属性查询与设置

  • QFile::Permissions permissions() const:返回当前目录的权限
  • bool setPermissions(QFile::Permissions permissions)尝试设置当前目录的权限,返回true表示成功,false表示失败。
  • bool QDir::isAbsolute() const:如果目录路径是绝对的,则返回 true;否则返回 false。
  • [static] bool QDir::isAbsolutePath(const QString &path):如果路径是绝对的,则返回 true;如果它是相对的,则返回 false。
  • bool isReadable() const:如果这个目录可以可读的,为true,否则为false;
  • bool isRelative() const:如果目录路径是相对的,则返回true;否则返回false。(在Unix下,如果不以“/”开头,则路径是相对的)。
  • [static] bool QDir::isRelativePath(const QString &path):如果path是相对路径返回true;如果是绝对路径则返回false。
  • [static] QChar QDir::listSeparator():返回本地路径列表分隔符:Unix下的’:‘和Windows下的’;’
  • [static] bool QDir::match(const QString &filter, const QString &fileName)
    如果fileName匹配过滤器列表中的任何通配符(glob)模式,则返回true;否则返回false。匹配不区分大小写。
  • [static] QDir QDir::temp():返回系统的临时目录。
  • [static] QString QDir::tempPath():返回系统临时目录的绝对规范路径。
    在Unix/Linux系统上,这是TMPDIR环境变量中的路径,如果没有定义TMPDIR,则是/tmp。在Windows上,这通常是TEMP或TMP环境变量中的路径。此方法返回的路径不以目录分隔符结束,除非它是(驱动器的)根目录。

(7)其他辅助方法

  • bool exists(const QString &name) const:返回 true 如果名为 name 的文件存在;否则返回 false。

  • bool exists() const:检查当前路径是否存在且为有效目录
    在这里插入图片描述

  • bool isRoot() const:判断当前路径是否为文件系统的根目录

  • QDir root():返回代表文件系统根目录的QDir对象。

  • [static] QDir QDir::home():返回用户的主目录对应的QDir对象。

  • [static] QString QDir::homePath():用于获取当前用户的主目录(Home Directory)路径

  • [static] QDir current():返回当前工作目录对应的QDir对象。

  • [static] QString QDir::currentPath():获取并返回当前应用程序的工作目录

  • QDir temp():返回系统的临时文件目录对应的QDir对象。

三、枚举与类型定义

  • enum Filters:定义了筛选目录条目的多种标准,如Dirs、Files、Hidden、Readable、Writable等。
  • enum SortFlags:定义了排序目录条目的依据,如Name、Time、Size、Reversed等。

四、类的应用

(1)文件系统导航

​ 通过QDir,应用程序可以方便地在文件系统中切换、创建和删除目录,实现目录层次结构的遍历。

(2)文件查找与筛选

​ 利用QDir的过滤器和排序功能,可以按名称、类型、时间戳等属性精确查找文件,支持批量操作和复杂条件组合。

(3)路径规范化与转换

​ QDir有助于处理相对路径与绝对路径之间的转换,确保路径表达的一致性和准确性,尤其在处理用户输入或跨平台移植时尤为重要。

(4)权限管理

​ QDir提供了查询和设置目录权限的方法,有助于确保应用程序对文件系统的访问遵循正确的安全策略。

(5)系统资源定位

​ QDir提供了一系列便捷方法获取系统关键目录,如用户主目录、当前工作目录、临时文件目录等,简化了与系统环境紧密相关的资源配置。

​ 总之,QDir类是Qt应用程序进行文件系统操作的基础工具,无论是进行简单的目录导航、文件查找,还是复杂的文件管理任务,它都能提供高效、稳定且跨平台的支持。通过熟练运用QDir类,开发者可以有效地组织和操纵文件系统资源,提升应用程序的文件处理能力与用户体验。

这篇关于【跟我每天学习1个QT类】QDir类 — 操作文件和目录的强大工具的类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/907254

相关文章

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

sysmain服务可以禁用吗? 电脑sysmain服务关闭后的影响与操作指南

《sysmain服务可以禁用吗?电脑sysmain服务关闭后的影响与操作指南》在Windows系统中,SysMain服务(原名Superfetch)作为一个旨在提升系统性能的关键组件,一直备受用户关... 在使用 Windows 系统时,有时候真有点像在「开盲盒」。全新安装系统后的「默认设置」,往往并不尽编

Python自动化处理PDF文档的操作完整指南

《Python自动化处理PDF文档的操作完整指南》在办公自动化中,PDF文档处理是一项常见需求,本文将介绍如何使用Python实现PDF文档的自动化处理,感兴趣的小伙伴可以跟随小编一起学习一下... 目录使用pymupdf读写PDF文件基本概念安装pymupdf提取文本内容提取图像添加水印使用pdfplum

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

使用Python的requests库来发送HTTP请求的操作指南

《使用Python的requests库来发送HTTP请求的操作指南》使用Python的requests库发送HTTP请求是非常简单和直观的,requests库提供了丰富的API,可以发送各种类型的HT... 目录前言1. 安装 requests 库2. 发送 GET 请求3. 发送 POST 请求4. 发送

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报