2025年QDir(目录)

QDir(目录)QDir 类提供对目录结构及其内容的访问 QDir 用于操作路径名 访问有关路径和文件的信息以及操作底层文件系统 它也可以用来访问 Qt 的资源系统 Qt 使用 作为通用目录分隔符 就像 URL 中的 用作路径分隔符一样 如果您始终使用 作为目录分隔符 Qt 将翻译您的路径以符合底层操作系统 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

小讯
上一篇 2025-01-28 12:41
下一篇 2025-03-02 23:53

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/65560.html