QDir(目录)
创始人
2024-03-17 22:29:33
0次

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()<<"目录的绝对路径"<

获取整个目录内容:

    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

相关内容

热门资讯

前端-session、jwt 目录:   (1)session (2&#x...
linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
nodejs:本地安装nvm实... 一、背景-使用不同版本node的原因 vue3+ts、nuxt3版本,node...
JAVA集合知识整理 Java集合知识整理 HashMap相关 HashMap的底层数据结构:jdk1.8之...
无刷直流电机介绍及单片机控制实... 无刷直流电机介绍及单片机控制实例前言基本概念优势与劣势使用寿命基本结构使用单片机控制实例电子调速器&...
fwdiary(2) dp2 1.传纸条  AcWing 275. 传纸条 - AcWing 走两条路,走一条最大的...
常用的DOS命令 常用的DOS命令 DOS(Disk Operating System,磁...
<C++> 类和对象(下) 1.const成员函数将const修饰的“成员函数”称之为const成员函数,cons...