Qt-QDir

一、绪论

方法签名 功能描述
bool mkdir(const QString &dirName) 创建子目录。
bool mkpath(const QString &dirPath) 递归创建多级目录。
bool rmdir(const QString &dirName) 删除空目录。
bool removeRecursively() 递归删除整个目录树及其内容。
bool cd(const QString &dirName) 切换到指定子目录。
bool cdUp() 切换到父目录。
QStringList entryList(QDir::Filters filters) 获取目录下的条目名称列表。
QFileInfoList entryInfoList(...) 获取目录下文件的详细信息列表。
bool exists() 检查目录是否存在。
bool remove(const QString &fileName) 删除指定文件。
QString absolutePath() 返回目录的绝对路径。
QString filePath(const QString &fileName) 返回文件在目录中的完整路径

二、常用操作

2.1.创建操作

注意这个是在当前工作目录中创建的;

代码:

cpp 复制代码
 QDir dir;
     if(dir.mkdir("test"))
    {
        qDebug()<<"目录创建成功";
     }
    

结果:

2.2. 遍历目录

可以增加过滤器遍历目录,增加可读性。

  • 常用过滤器 (QDir::Filter):

    • QDir::Dirs:列出目录。

    • QDir::Files:列出文件。

    • QDir::NoDotAndDotDot:不显示 "." 和 ".." 条目。

    • QDir::AllEntries:列出所有条目(目录、文件、驱动器)。

    • QDir::NoSymLinks:不列出符号链接。

  • 常用排序标志 (QDir::SortFlag):

    • QDir::Name:按名称排序。

    • QDir::Time:按修改时间排序。

    • QDir::Size:按文件大小排序。

    • QDir::DirsFirst:目录优先。

    • QDir::IgnoreCase:忽略大小写。

代码:

cpp 复制代码
    QDir dir("D:/qtdemo/daily_test_window/build/Desktop_Qt_6_7_0_MinGW_64_bit-Debug");

    // 设置过滤条件:只获取文件,排除 "." 和 ".."
    dir.setFilter(QDir::Files | QDir::NoDotAndDotDot);
    // 设置排序:按名称排序,目录优先
    dir.setSorting(QDir::Name | QDir::DirsFirst);

    // 获取文件名称列表
    QStringList entries = dir.entryList();
    for (const QString &entry : entries) {
        qDebug() << "文件:" << entry;
    }

结果:

2.3.删除操作

cpp 复制代码
QDir dir("D:/qtdemo/daily_test_window/build/Desktop_Qt_6_7_0_MinGW_64_bit-Debug/test");

     if (!dir.exists()) {
         qDebug() << "目录不存在:" << dir;

     }
     // 使用 removeRecursively() 删除整个目录树
     bool result = dir.removeRecursively();
     if (result) {
         qDebug() << "目录删除成功:" << dir;
     } else {
         qDebug() << "目录删除失败:" << dir;
     }

结果:

相关推荐
事圆则缓8 分钟前
Kotlin 集合与序列:给页面一份清楚的数据
开发语言·windows·kotlin
事圆则缓9 分钟前
Kotlin 异步与并发:从一次搜索请求走到状态流
android·开发语言·kotlin
从小白到软工23 分钟前
4-3 项目-学生成绩管理系统(上)
c语言·开发语言·数据结构·经验分享·ai编程
外收内放41 分钟前
Python基础语法练习题(72)
开发语言·python
无忧.芙桃44 分钟前
C++语言原理与实践(十三):stack、queue 和 priority_queue的介绍与使用
开发语言·c++·栈·队列
Shaoshing1 小时前
消息发送
java·开发语言
乌暮1 小时前
从 `println` 到生产级日志:Spring Boot 日志体系完全指南
java·开发语言·jvm·spring boot·后端·学习·面试
星夜离尘562 小时前
MATLAB 定点量化误差实验 半个 LSB 的界限为什么挡不住削顶失真
开发语言·matlab
Wang's Blog2 小时前
Java 项目实战: 交友项目 - 百度人脸识别:介绍
java·开发语言·交友