QDir(目录)

news2024/11/15 21:26:44

QDir 类提供对目录结构及其内容的访问,QDir 用于操作路径名、访问有关路径和文件的信息以及操作底层文件系统,它也可以用来访问Qt的资源系统。

Qt使用“/”作为通用目录分隔符,就像URL中的“/”用作路径分隔符一样。如果您始终使用“/”作为目录分隔符,Qt将翻译您的路径以符合底层操作系统。QDir 可以使用相对路径或绝对路径指向文件。绝对路径以目录分隔符开头(可以选择在 Windows 下以驱动器规范开头)。相对文件名以目录名或文件名开头,并指定相对于当前目录的路径。

注意:以冒号 () 开头的路径始终被认为是绝对的,因为它们表示QResurce

 构造函数:

 常用函数:

absoluteFilePath()返回目录中文件的绝对路径名。检查目录中是否确实存在该文件
absolutePath()返回绝对路径
addSearchPath()将路径添加到前缀的搜索路径
canonicalPath()返回规范路径,即没有符号链接或冗余 “.” 或 “..” 元素的路径
cd()修改目录名
cdUp()上移一个目录
clearPath()返回规范化目录分隔符的路径
count()返回该目录中目录和文件的个数
current()返回当前目录
currentPath()返回当前目录的绝对路径
dirName()返回目录名称
drives()返回此系统上根目录的列表
entryInfoList()返回目录中所有文件和目录的QFileInfo对象列表
entryList()返回目录中所有文件和目录的名称列表

exist()

判断目录是否存在
filePath()返回目录文件中的路径名
fromNativeSeparators (QString)把路径转换为以'/'作为分割符的路径
home()返回用户的主目录
homePath()返回用户主目录的绝对路径

isEmpty()

目录是否为空
isRoot()是否为根目录

makeAbsolute()

把路径转化为绝对路径
mkdir()创建一个子目录
rmdir()删除空目录
path()返回路径,这可能包含符号链接
refresh()刷新
remove()删除文件
removeRecursively()删除目录,删除里面的所有内容
root()返回根目录
rootPath()返回根目录路径
temp()返回临时目录

设置函数:

setCurrent(QString &path)将应用程序的当前工作目录设置为path
setFilter()设置筛选器
setNameFilters(QStringList  nameFilters)设置多个筛选
setSoring()设置排序顺序

QDir::Filters(过滤器) 

QDir::Dirs列出与筛选器匹配的目录
QDir::AllDirs列出所有目录;即不要将过滤器应用于目录名称
QDir::Files列出文件
QDir::Drives列出磁盘驱动器
QDir::NoSymLinks不要列出符号链接
QDir::NoDotAndDotDot不要列出特殊条目“.”和“..”
QDir::NoDot不要列出特殊条目“.”
QDir::NoDotDot不要列出特殊条目“..”
QDir::AllEntries列出目录、文件、驱动器和符号链接

QDir::Readable

QDir::Writable

列出应用程序具有读取访问权限的文件

列出应用程序具有写入访问权限的文件

需要目录和文件配合使用

QDir::Executable列出应用程序具有执行访问权限的文件。可执行文件值需要与目录或文件结合使用。
QDir::Modified仅列出已修改的文件
QDir::Hidden列出隐藏文件
QDir::System列出系统文件
QDir::CaseSensitive筛选器应区分大小写

QDir::SortFlags(排序方式)

QDir::Name按名称排序
QDir::Time按时间(修改时间)排序
QDir::Size按文件大小排序
QDir::Type按文件类型(扩展名)排序
QDir::Unsorted不要排序
QDir::NoSort默认情况下不排序
QDir::DirsFirst首先放置目录,然后放置文件
QDir::DirsLast首先放置文件,然后放置目录
QDir::Reversed反转排序顺序
QDir::IgnoreCase排序不区分大小写
QDir::LocaleAware使用当前区域设置对项目进行适当排序

目录的原样: 

目录属性:

    QDir dir("F:/text2");
    qDebug()<<"目录的绝对路径"<<dir.absolutePath();
    qDebug()<<"目录的规范路径"<<dir.canonicalPath();
    qDebug()<<"目录的文件和目录个数"<<dir.count();
    qDebug()<<"当前目录"<<dir.current();
    qDebug()<<"当前目录路径"<<dir.currentPath();
    qDebug()<<"返回主目录"<<dir.home();
    qDebug()<<"返回主目录路径"<<dir.homePath();
    qDebug()<<"修改目录名"<<dir.cd("text222");
    qDebug()<<"上移一个目录"<<dir.cdUp();
    qDebug()<<"目录的当前的绝对路径"<<dir.absolutePath();

获取整个目录内容:

    QDir dir("F:/text2");
    QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    listwidget->setFixedSize(200,800);//设置大小
    QStringList slist=dir.entryList();//获取目录里的内容
    listwidget->addItems(slist);//添加目录里面的内容

使用过滤器:

entryList函数:

使用函数: 

  • 使用dir.entryList()

  • 使用setFilter() 

1.仅过滤掉隐藏文件

只过滤隐藏文件的话,需要使用dir.entryList(dir.filter()|QDir::NoDotAndDotDot);

使用 entryList()

注意:只过滤隐藏文件  不可以直接使用
QStringList slist=dir.entryList(QDir::NoDotAndDotDot);//错误
需要使用
QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);//正确

使用 setFilter()

    //dir.setFilter(QDir::NoDotAndDotDot);//错误
    dir.setFilter(dir.filter()|QDir::NoDotAndDotDot);//正确
    QStringList slist=dir.entryList();

2.设置多个过滤条件

设置多个条件的话就可以不使用dir.filter()|QDir::NoDotAndDotDot

获取目录中的文件夹:

使用 entryList()

    QStringList slist=dir.entryList(QDir::NoDotAndDotDot|QDir::Dirs);

 使用 setFilter()

    dir.setFilter(QDir::NoDotAndDotDot|QDir::Dirs);
    QStringList slist=dir.entryList();

 

 获取目录中的文件:

使用 entryList()

    QStringList slist=dir.entryList(QDir::NoDotAndDotDot|QDir::Files);

使用 setFilter() 

    dir.setFilter(QDir::NoDotAndDotDot|QDir::Files);
    QStringList slist=dir.entryList();

设置多个筛选

使用:setNameFilters(QStringList  nameFilters)可以细致的筛选文件,筛选多个文件后缀名

    QDir dir("F:/text2");
    QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    listwidget->setFixedSize(200,800);//设置大小

    QStringList filterlist;
    filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
    dir.setNameFilters(filterlist);//设置筛选

    QStringList slist=dir.entryList(dir.filter()|QDir::NoDotAndDotDot);
    listwidget->addItems(slist);//添加目录里面的文件

两个筛选一起使用:

    QDir dir("F:/text2");
    QListWidget *listwidget=new QListWidget(this);//创建一个列表控件
    listwidget->setFixedSize(200,800);//设置大小
    
    QStringList filterlist;
    filterlist<<"*.dll"<<"*txt";//筛选以dll和txt结尾的文件
    
    QStringList slist=dir.entryList(filterlist,dir.filter()|QDir::NoDotAndDotDot);
    listwidget->addItems(slist);//添加目录里面的文件

 使用排序器:

QDir::SortFlagssort= NoSort

  • 使用entryList()进行设置
  • 使用setSorting()进行设置

按照大小进行排序:

entryList()进行设置

    QStringList slist=dir.entryList(dir.filter(),QDir::Size);

setSorting()进行设置 

    dir.setSorting(QDir::Size);
    QStringList slist=dir.entryList();

 使用:下面的函数可以把以上三个功能一起使用

entryList(const QStringList &nameFilters, QDir::Filters filters = NoFilter, QDir::SortFlags sort = NoSort) const

也可以直接获得文件信息列表:

entryInfoList(const QStringList &nameFilters, QDir::Filtersfilters= NoFilter, QDir::SortFlagssort= NoSort) const

entryInfoList(QDir::Filtersfilters= NoFilter, QDir::SortFlagssort= NoSort) const

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/61443.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2022年大一学生实训作业【基于HTML+CSS制作中华传统文化传统美德网站 (6页面)】

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

【YOLOv7/YOLOv5系列算法改进NO.47】改进激活函数为GELU

文章目录前言一、解决问题二、基本原理三、​添加方法四、总结前言 作为当前先进的深度学习目标检测算法YOLOv7&#xff0c;已经集合了大量的trick&#xff0c;但是还是有提高和改进的空间&#xff0c;针对具体应用场景下的检测难点&#xff0c;可以不同的改进方法。此后的系列…

SparkSQL - 介绍及使用 Scala、Java、Python 三种语言演示

一、SparkSQL 前面的文章中使用 RDD 进行数据的处理&#xff0c;优点是非常的灵活&#xff0c;但需要了解各个算子的场景&#xff0c;需要有一定的学习成本&#xff0c;而 SQL 语言是一个大家十分熟悉的语言&#xff0c;如果可以通过编写 SQL 而操作RDD&#xff0c;学习的成本…

ARM汇编之程序状态寄存器传输指令

ARM汇编之程序状态寄存器传输指令前言 首先&#xff0c;请问大家几个小小问题&#xff0c;你清楚&#xff1a; CLZ指令的常见使用场景&#xff1b;状态寄存器访问指令有哪些&#xff1f; 今天&#xff0c;我们来一起探索并回答这些问题。为了便于大家理解&#xff0c;以下是…

[附源码]Python计算机毕业设计SSM金牛社区疫情防控系统(程序+LW)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

[附源码]JAVA毕业设计老年人健康饮食管理系统(系统+LW)

[附源码]JAVA毕业设计老年人健康饮食管理系统&#xff08;系统LW&#xff09; 目运行 环境项配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项…

LeetCode 0542. 01 矩阵

【LetMeFly】542.01 矩阵 力扣题目链接&#xff1a;https://leetcode.cn/problems/01-matrix/ 给定一个由 0 和 1 组成的矩阵 mat &#xff0c;请输出一个大小相同的矩阵&#xff0c;其中每一个格子是 mat 中对应位置元素到最近的 0 的距离。 两个相邻元素间的距离为 1 。 示…

MySQL数据库之存储引擎

MySQL数据库之存储引擎数据存储引擎介绍MyISAM数据引擎概述MyISAM的特点介绍及数据引擎对应文件MyISAM的存储格式分类MyISAM适用的生产场景举例InnoDB数据引擎概述InnoDB特点介绍及数据引擎对应文件InnoDB适用生产场景分析企业选择存储引擎的依据如何配置存储引擎查看系统支持的…

c<8>指针

目录 2&#xff0c;指针的赋值 2.1C语言允许指针赋值为0&#xff08;初始化&#xff09; 2.2指针赋值例 2.3输出指针的值 3&#xff0c;用指针引用数组 3.1利用指针输入数组 3.2优先级问题 4.多维数组 5.字符串 5.1通过指针引用字符串 4.函数中对指针的应用 4.1将指针变…

[附源码]计算机毕业设计车源后台管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Acer W700废物利用- 第一章 - 安装Linux系统Debian 11.5

前言 收拾房子时在犄角旮旯发现了一台N年前的Windows平板&#xff0c;也就是今天的主角&#xff1a;Acer W700 &#xff0c;机器配置是&#xff1a;CPU&#xff1a;I5-3337U&#xff1b;内存&#xff1a;4G&#xff1b;硬盘&#xff1a;128G固态&#xff1b; 插上充电线&…

YOLOv5图像分割--SegmentationModel类代码详解

目录 ​编辑 SegmentationModel类 DetectionModel类 推理阶段 DetectionModel--forward() BaseModel--forward() Segment类 Detect--forward SegmentationModel类 定义model将会调用models/yolo.py中的类SegmentationModel。该类是继承父类--DetectionModel类。 cl…

数学基础从高一开始1、集合的概念

数学基础从高一开始1、集合的概念 目录 数学基础从高一开始1、集合的概念 一、课程引入 解析&#xff1a;方程​编辑2是否有解&#xff1f; 解析&#xff1a;所有到定点的距离等于定长的点组成何种图形&#xff1f; 结论&#xff1a; 二、课程讲解 问题1&#xff1a; 集…

1548_AURIX_TC275_锁步比较逻辑LCL

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这可能是这段时间看过的最简单的一个章节了&#xff0c;所有的章节内容都可以放进这一份笔记也不显得多。 1. 首先明确LCL的意思&#xff0c;其实是锁步核比较器逻辑的意思&#xff0c;还不…

知识点1--认识Docker

IT界2014年之前&#xff0c;对于服务器虚拟化的使用&#xff0c;有过一个流派&#xff0c;基于Windows server系统VMware组成服务器集群&#xff0c;但是后期由于这样的使用方式维护成本相当高&#xff0c;比如服务器的序列、服务器台账以及服务器与服务器之间的切换等等&#…

据说Linuxer都难忘的25个画面

虽然对 Linux 正式生日是哪天还有些争论&#xff0c;甚至 Linus Torvalds 认为在 1991 那一年有四个日子都可以算作 Linux 的生日。但是不管怎么说&#xff0c;Linux 已经 25 岁了&#xff0c;这里我们为您展示一下这 25 年来发生过的 25 件重大里程碑事件。 1991&#xff1a;L…

SpringMVC学习笔记二(获取Cookies、Session和Header、IDEA热部署)

目录 一、一些前置知识 二、SpringMVC获取cookies和session &#x1f351;获取cookies和header &#x1f351;获取session 三、SpringMVC热部署 &#x1f4dd;添加框架支持 &#x1f4dd;settings配置开启自动热部署 &#x1f4dd;开启运行中热部署&#xff1a; &…

【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程

【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程 Autopsy是一款非常优秀且功能强大的免费开源数字取证分析工具。—【蘇小沐】 文章目录【Autopsy数字取证篇】Autopsy案例创建与镜像分析详细教程1.实验环境2.Autopsy下载安装&#xff08;一&#xff09;创建案例1.软件…

【简单易操作】图漾TM460-E2深度网络相机在ROS-melodic环境下的配置过程

目录一、配置的环境二、下载内容及链接三、ubuntu环境配置下载 Camport3 SDK安装依赖编译运行四、安装OpenNI2套件下载 Camport3 OpenNI2 SDK安装 Camport3 OpenNI2 SDK五、ROS平台安装下载 Camport3 ROS SDK编译配置环境变量运行一、配置的环境 相机型号&#xff1a;TM460-E2…

OpenRASP agent源码分析

目录 前言 准备 源码分析 1. manifest 2. agent分析 3. agent卸载逻辑 总结 前言 笔者在很早前写了(231条消息) OpenRASP Java应用自我保护使用_fenglllle的博客-CSDN博客 实际上很多商业版的rasp工具都是基于OpenRASP的灵感来的&#xff0c;主要就是对核心的Java类通过…