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

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

基于Python打造一个全能文本处理工具

《基于Python打造一个全能文本处理工具》:本文主要介绍一个基于Python+Tkinter开发的全功能本地化文本处理工具,它不仅具备基础的格式转换功能,更集成了中文特色处理等实用功能,有需要的... 目录1. 概述:当文本处理遇上python图形界面2. 功能全景图:六大核心模块解析3.运行效果4. 相

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

Spring LDAP目录服务的使用示例

《SpringLDAP目录服务的使用示例》本文主要介绍了SpringLDAP目录服务的使用示例... 目录引言一、Spring LDAP基础二、LdapTemplate详解三、LDAP对象映射四、基本LDAP操作4.1 查询操作4.2 添加操作4.3 修改操作4.4 删除操作五、认证与授权六、高级特性与最佳

Qt spdlog日志模块的使用详解

《Qtspdlog日志模块的使用详解》在Qt应用程序开发中,良好的日志系统至关重要,本文将介绍如何使用spdlog1.5.0创建满足以下要求的日志系统,感兴趣的朋友一起看看吧... 目录版本摘要例子logmanager.cpp文件main.cpp文件版本spdlog版本:1.5.0采用1.5.0版本主要

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

基于Python实现高效PPT转图片工具

《基于Python实现高效PPT转图片工具》在日常工作中,PPT是我们常用的演示工具,但有时候我们需要将PPT的内容提取为图片格式以便于展示或保存,所以本文将用Python实现PPT转PNG工具,希望... 目录1. 概述2. 功能使用2.1 安装依赖2.2 使用步骤2.3 代码实现2.4 GUI界面3.效

基于Python和MoviePy实现照片管理和视频合成工具

《基于Python和MoviePy实现照片管理和视频合成工具》在这篇博客中,我们将详细剖析一个基于Python的图形界面应用程序,该程序使用wxPython构建用户界面,并结合MoviePy、Pill... 目录引言项目概述代码结构分析1. 导入和依赖2. 主类:PhotoManager初始化方法:__in

使用Python自建轻量级的HTTP调试工具

《使用Python自建轻量级的HTTP调试工具》这篇文章主要为大家详细介绍了如何使用Python自建一个轻量级的HTTP调试工具,文中的示例代码讲解详细,感兴趣的小伙伴可以参考一下... 目录一、为什么需要自建工具二、核心功能设计三、技术选型四、分步实现五、进阶优化技巧六、使用示例七、性能对比八、扩展方向建