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;
     }

结果:

相关推荐
不会C语言的男孩1 分钟前
C++ Primer Plus 第13章:类继承
开发语言·c++
我材不敲代码1 分钟前
Python基础: 函数超全详解:定义、参数、返回值、作用域与递归
开发语言·python·算法
志起计算机编程2 分钟前
挖掘单节点Clickhouse极致性能上限
服务器·开发语言·python
Reisentyan4 分钟前
[Pro]GoLang Learn Data Day 5
开发语言·后端·golang
zhangfeng11334 分钟前
华为昇腾910A NPU 的模型加密方案 ASCEND-CC
开发语言·人工智能·神经网络·transformer
聆风吟º8 分钟前
【Python编程日志】Python基础语法:常量 | 表达式 | 变量
开发语言·python·变量·常量·表达式
凯瑟琳.奥古斯特13 分钟前
10道数据库原理精选题
开发语言·数据库·职场和发展·数据库开发
z落落14 分钟前
C# Stack栈 / Queue队列+所有集合 终极一页汇总(全覆盖、零遗漏)
java·开发语言·c#
skywalk816315 分钟前
设计和实现一门中文编程语言,有什么工具可以使用吗?是不是ANTLR 和LLVM都可以使用?Racket恐怕不适用吧
开发语言·编程
磊 子24 分钟前
STL之set以及set和map区别
开发语言·c++·算法