【跟我每天学习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

相关文章

python版本切换工具pyenv的安装及用法

《python版本切换工具pyenv的安装及用法》Pyenv是管理Python版本的最佳工具之一,特别适合开发者和需要切换多个Python版本的用户,:本文主要介绍python版本切换工具pyen... 目录Pyenv 是什么?安装 Pyenv(MACOS)使用 Homebrew:配置 shell(zsh

MySQL游标和触发器的操作流程

《MySQL游标和触发器的操作流程》本文介绍了MySQL中的游标和触发器的使用方法,游标可以对查询结果集进行逐行处理,而触发器则可以在数据表发生更改时自动执行预定义的操作,感兴趣的朋友跟随小编一起看看... 目录游标游标的操作流程1. 定义游标2.打开游标3.利用游标检索数据4.关闭游标例题触发器触发器的基

在C#中分离饼图的某个区域的操作指南

《在C#中分离饼图的某个区域的操作指南》在处理Excel饼图时,我们可能需要将饼图的各个部分分离出来,以使它们更加醒目,Spire.XLS提供了Series.DataFormat.Percent属性,... 目录引言如何设置饼图各分片之间分离宽度的代码示例:从整个饼图中分离单个分片的代码示例:引言在处理

Qt实现对Word网页的读取功能

《Qt实现对Word网页的读取功能》文章介绍了几种在Qt中实现Word文档(.docx/.doc)读写功能的方法,包括基于QAxObject的COM接口调用、DOCX模板替换及跨平台解决方案,重点讨论... 目录1. 核心实现方式2. 基于QAxObject的COM接口调用(Windows专用)2.1 环境

Python列表的创建与删除的操作指南

《Python列表的创建与删除的操作指南》列表(list)是Python中最常用、最灵活的内置数据结构之一,它支持动态扩容、混合类型、嵌套结构,几乎无处不在,但你真的会创建和删除列表吗,本文给大家介绍... 目录一、前言二、列表的创建方式1. 字面量语法(最常用)2. 使用list()构造器3. 列表推导式

MySQL数据目录迁移的完整过程

《MySQL数据目录迁移的完整过程》文章详细介绍了将MySQL数据目录迁移到新硬盘的整个过程,包括新硬盘挂载、创建新的数据目录、迁移数据(推荐使用两遍rsync方案)、修改MySQL配置文件和重启验证... 目录1,新硬盘挂载(如果有的话)2,创建新的 mysql 数据目录3,迁移 MySQL 数据(推荐两

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

MySQL基本表查询操作汇总之单表查询+多表操作大全

《MySQL基本表查询操作汇总之单表查询+多表操作大全》本文全面介绍了MySQL单表查询与多表操作的关键技术,包括基本语法、高级查询、表别名使用、多表连接及子查询等,并提供了丰富的实例,感兴趣的朋友跟... 目录一、单表查询整合(一)通用模版展示(二)举例说明(三)注意事项(四)Mapper简单举例简单查询

Nginx概念、架构、配置与虚拟主机实战操作指南

《Nginx概念、架构、配置与虚拟主机实战操作指南》Nginx是一个高性能的HTTP服务器、反向代理服务器、负载均衡器和IMAP/POP3/SMTP代理服务器,它支持高并发连接,资源占用低,功能全面且... 目录Nginx 深度解析:概念、架构、配置与虚拟主机实战一、Nginx 的概念二、Nginx 的特点