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

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...