当前位置: 首页 > news >正文

QDir(目录)

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

相关文章:

  • LeetCode每日一题——1774. 最接近目标价格的甜点成本
  • [附源码]JAVA毕业设计口腔医院网站(系统+LW)
  • 电子学会2021年3月青少年软件编程(图形化)等级考试试卷(四级)答案解析
  • 微服务架构
  • 研发效能工程实践-利用Superset快速打造大数据BI平台
  • Springboot RabbitMq源码解析之RabbitListener注解 (四)
  • MedNeRF:用于从单个X射线重建3D感知CT投影的医学神经辐射场
  • 性能测试工具:如何录制脚本?
  • Dubbo SPI扩展机制源码详解(基于2.7.10)
  • 创建你的第⼀个XXL-Job分布式调度任务
  • 基于X86的运算板卡加速边缘智能应用
  • 基于MCMC的交通量逆建模(Matlab代码实现)
  • [附源码]计算机毕业设计校园代取快递系统Springboot程序
  • MapStruct与lombok加载顺序问题与annotationProcessorPaths的关系?
  • Express:CORS 跨域资源共享
  • SpringBoot+Vue项目便捷洗衣服务平台
  • c语言结构体看这篇文章就够啦(详细介绍结构体)
  • MySQL主从复制
  • 公众号网课题库接口
  • 《C++ Primer Plus》第九章:内存模型和名称空间(1)
  • java计算机毕业设计跑腿管理系统源程序+mysql+系统+lw文档+远程调试
  • 【代码随想录训练营】Day57-动态规划
  • 码云线上误删主项目文件夹的恢复
  • Maiores incidunt cupiditate reprehenderit.Ipsam doloribus in.
  • Python内置函数(55)——round
  • 《C++语言程序设计》大作业(三个模块)
  • R语言使用lightgbm包构建多分类的LightGBM模型、使用predict函数和训练好的模型进行预测推理、将推理后的概率值转化为预测标签
  • 计算机毕业设计Java企业售后服务管理系统(源代码+数据库+系统+lw文档)
  • Day19 | 每天五道题
  • 02.java课复习
  • 湖南2021本科批(普通类历史类)第一次征集志愿投档分数线
  • 2022年甘肃高考482分能报什么大学 482分能上哪些院校
  • 2022年全国各大高校在山东招生计划及分数
  • 浙江有哪些师范大学,年浙江师范类大学分数线排名一览表
  • 武汉设计工程学院是几本
  • 2022感恩节放假吗 中国有哪些节日会放假
  • 12种新高考3+1+2选科组合分析 怎么选科好
  • 0基础艺考最容易过的专业有哪些 通过率最高的专业是什么
  • 体育高水平怎么报名
  • 浙江2022普通类第二段平行投档分数线是多少