qt QDir详解

news/2024/11/8 4:52:27 标签: qt
1、概述

QDir是Qt框架中的一个核心类,它提供了对文件系统目录的操作接口。Qt是一个跨平台的应用程序开发框架,广泛用于开发桌面、移动和嵌入式设备上的应用程序。QDir类使得开发者能够方便地在不同操作系统上处理目录和文件,如进行目录遍历、文件查找、创建、删除、移动等操作。

2、重要方法

QDir类提供了多种方法来操作目录和文件,以下是一些重要的方法:

  • 目录操作

    • mkdir() / mkpath():创建单级或多级目录。
    • rmdir():删除空目录。
    • removeRecursively():删除包含文件和子目录的非空目录。
    • rename():重命名或移动目录。
    • exists():检查目录是否存在。
    • isReadable() / isWritable() / isAbsolute():检查目录的各种属性。
  • 文件操作

    • entryList() / entryInfoList():获取目录内文件和子目录列表,可设置过滤条件和排序方式。
    • findFiles() / findChildren():查找特定文件或子目录。
    • remove():删除文件。
    • rename():重命名文件。
  • 路径处理

    • currentPath():获取当前工作目录。
    • setCurrent():设置当前工作目录。
    • absolutePath():返回绝对路径。
    • canonicalPath():返回规范化路径。
    • dirName():获取当前目录名。
    • setPath():设置QDir对象的路径。
    • path():获取QDir对象的路径。
  • 过滤和排序

    • setNameFilters():设置文件名过滤规则。
    • setSorting():设置排序方式。
  • 链接和符号链接

    • isSymLink():检查是否为符号链接。
    • symLinkTarget():获取符号链接的目标路径。
3、重要信号

关于QDir类的重要信号,需要注意的是,QDir本身并不直接发出信号。然而,在Qt框架中,与文件和目录操作相关的类(如QFileSystemWatcher)可以发出信号来监控文件和目录的变化。例如,QFileSystemWatcher可以监控指定目录和文件的状态,当目录或文件发生改变时(如内容变化、重命名、删除等),将触发相应的信号。开发者可以通过信号与槽的机制捕获这些信号并作出反应。

但请注意,由于QDir本身不直接发出信号,因此在此部分中无法列出QDir的特定信号。如果需要监控文件和目录的变化,请考虑使用QFileSystemWatcher等类。

#include <QDir>  
#include <QFileInfo>  
#include <QTextStream>  
#include <QStandardPaths>  
#include <QFile>  
#include <QDebug>  
  
int main(int argc, char *argv[]) {  
    // 获取并打印当前工作目录  
    QDir currentDir = QDir::current();  
    qDebug() << "Current directory: " << currentDir.path();  
  
    // 创建多级目录  
    QString newDirPath = "/path/to/new/directory";  
    if (QDir().mkpath(newDirPath)) {  
        qDebug() << "Directory created: " << newDirPath;  
    } else {  
        qDebug() << "Failed to create directory!";  
    }  
  
    // 列出指定目录下的所有文件和子目录(不递归)  
    QDir dir("/path/to/some/directory");  
    QStringList entries = dir.entryList(QDir::Files | QDir::Dirs | QDir::NoDotAndDotDot);  
    for (const QString &entry : entries) {  
        qDebug() << entry;  
    }  
  
    // 按大小排序列出目录下的所有文件,并显示详细信息  
    QDir dirWithDetails("/path/to/some/directory");  
    dirWithDetails.setSorting(QDir::Size | QDir::Reversed);  
    QFileInfoList fileInfoList = dirWithDetails.entryInfoList(QDir::Files);  
    for (const QFileInfo &info : fileInfoList) {  
        qDebug() << "Name: " << info.fileName();  
        qDebug() << "Size: " << info.size();  
        qDebug() << "IsDir: " << info.isDir();  
        qDebug() << "Last modified: " << info.lastModified().toString();  
        qDebug() << "";  
    }  
  
    return 0;  
}

觉得有帮助的话,打赏一下呗。。

           


http://www.niftyadmin.cn/n/5743235.html

相关文章

C语言 -- qsort的简单使用

qsort函数 一、介绍二、语法格式三、使用函数从小到大从大到小 四、结语 一、介绍 qsort 函数是 C 标准库中的一个通用排序函数&#xff0c;用于对数组进行快速排序。它定义在 <stdlib.h> 头文件中。这个非常灵活&#xff0c;因为它允许用户指定数组的元素类型、数组的大…

基于Multisim拔河比赛游戏+计分电路(含仿真和报告)

【全套资料.zip】拔河比赛游戏计分电路Multisim仿真设计数字电子技术 文章目录 功能一、Multisim仿真源文件二、原理文档报告资料下载【Multisim仿真报告讲解视频.zip】 功能 1.拔河游戏机用9个发光二极管排成一行。 2.开机后只有中间一个点亮&#xff0c;以此作为拔河的中心…

爬虫入门urllib 和 request(二)

文章目录 1、urllib介绍2、urllib的基本方法介绍2.1 urllib.Request2.2 response.read() 3、urllib请求百度首页的完整例子4、小结 1、urllib介绍 除了requests模块可以发送请求之外, urllib模块也可以实现请求的发送,只是操作方法略有不同! urllib在python中分为urllib和url…

【青牛科技】GC8549替代LV8549/ONSEMI在摇头机、舞台灯、打印机和白色家电等产品上的应用分析

引言 在现代电子产品中&#xff0c;控制芯片的性能直接影响到设备的功能和用户体验。摇头机、舞台灯、打印机和白色家电等领域对控制精度、功耗和成本等方面的要求日益提高。LV8549/ONSEMI等国际品牌的芯片曾是这些产品的主要选择&#xff0c;但随着国内半导体技术的进步&…

【贪心算法】No.1---贪心算法(1)

文章目录 前言一、贪心算法&#xff1a;二、贪心算法示例&#xff1a;1.1 柠檬⽔找零1.2 将数组和减半的最少操作次数1.3 最⼤数1.4 摆动序列1.5 最⻓递增⼦序列1.6 递增的三元⼦序列 前言 &#x1f467;个人主页&#xff1a;小沈YO. &#x1f61a;小编介绍&#xff1a;欢迎来到…

那些在Nop代码生成器中用到的DSL

Nop平台基于所谓的可逆计算理论从零开始编写&#xff0c;它的整体实现可以看作是如下软件构造公式在不同抽象层面的反复应用 App Delta x-extends Generator<DSL> 为了将这个抽象公式落实为具体的技术实现&#xff0c;Nop平台内置了一系列的通用机制&#xff0c;用于实现…

《深度学习》——深度学习基础知识(全连接神经网络)

文章目录 1.神经网络简介2.什么是神经网络3.神经元是如何工作的3.1激活函数3.2参数的初始化3.2.1随机初始化3.2.2标准初始化3.2.3Xavier初始化&#xff08;tf.keras中默认使用的&#xff09;3.2.4He初始化 4.神经网络的搭建4.1通过Sequential构建神经网络4.2通过Functional API…

IPD开发流程与传统开发流程的区别

大部分科技型企业都建立了自己的新产品开发流程&#xff0c;而且很多都是基于ISO9000或TS16949等标准设计的&#xff0c;不少软件类企业倾向于按照CMMI或敏捷开发&#xff08;敏捷开发不在本文探讨范围&#xff09;建立开发流程&#xff0c;但绝大多数开发流程发挥的作用不理想…