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

相关文章

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

SpringBoot操作MaxComputer方式(保姆级教程)

《SpringBoot操作MaxComputer方式(保姆级教程)》:本文主要介绍SpringBoot操作MaxComputer方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的... 目录引言uqNqjoe一、引入依赖二、配置文件 application.properties(信息用自己

Redis客户端工具之RedisInsight的下载方式

《Redis客户端工具之RedisInsight的下载方式》RedisInsight是Redis官方提供的图形化客户端工具,下载步骤包括访问Redis官网、选择RedisInsight、下载链接、注册... 目录Redis客户端工具RedisInsight的下载一、点击进入Redis官网二、点击RedisI

基于Python实现一个PDF特殊字体提取工具

《基于Python实现一个PDF特殊字体提取工具》在PDF文档处理场景中,我们常常需要针对特定格式的文本内容进行提取分析,本文介绍的PDF特殊字体提取器是一款基于Python开发的桌面应用程序感兴趣的... 目录一、应用背景与功能概述二、技术架构与核心组件2.1 技术选型2.2 系统架构三、核心功能实现解析

C#中的 Dictionary常用操作

《C#中的Dictionary常用操作》C#中的DictionaryTKey,TValue是用于存储键值对集合的泛型类,允许通过键快速检索值,并且具有唯一键、动态大小和无序集合的特性,常用操作包括添... 目录基本概念Dictionary的基本结构Dictionary的主要特性Dictionary的常用操作

使用Python开发一个图像标注与OCR识别工具

《使用Python开发一个图像标注与OCR识别工具》:本文主要介绍一个使用Python开发的工具,允许用户在图像上进行矩形标注,使用OCR对标注区域进行文本识别,并将结果保存为Excel文件,感兴... 目录项目简介1. 图像加载与显示2. 矩形标注3. OCR识别4. 标注的保存与加载5. 裁剪与重置图像