QT目录遍历(QDir)

  1. QDir类提供了访问目录结构和他们的内容的方法。
  2. QDir类提供了访问目录结构和它们的内容的与平台无关的方式。
  3. QDir用来操作路径名称、关于路径和文件的访问信息和操作底层文件系统。
  4. QDir使用相对或绝对文件路径来指向一个文件。绝对路径是从目录分隔符“/”或者带有一个驱动器标识(除了在Unix下)。如果你总是使用“/”作为目录分隔符,Qt将会把你的路径转化为符合底层的操作系统的。相对文件名是由一个目录名称或者文件名开始并且指定一个相对于当前路径的路径。

例如绝对路径:

QDir("/home/administrator/soft");

QDir("D:/software");

我们可以使用isRelative()或isAbsolute()函数确认QDir是用的相对路径还是绝对路径。使用makeAbsolute()来转换相对路径的QDir转换成绝对路径的QDir。

下面来遍历“G:/”,并以两种方式输出目录:

测试代码

#include <QtCore/QCoreApplication>

#include <QDir>

#include <QList>

#include <QFileInfoList>

#include <QDebug>

#include <QTextCodec>

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QTextCodec *codec = QTextCodec::codecForName("UTF-8");

QTextCodec::setCodecForCStrings(codec);

QDir d("G:/");

d.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks | QDir::AllDirs);//列出文件,列出隐藏文件(在Unix下就是以.开始的为文件),不列出符号链接(不支持符号连接的操作系统会忽略)

d.setSorting(QDir::Size | QDir::Reversed);//按文件大小排序,相反的排序顺序

const QFileInfoList list = d.entryInfoList();//返回这个目录中所有目录和文件的QFileInfo对象的列表

QFileInfoList::const_iterator iterator = list.begin();

qDebug() << "目录和文件的数量: " << d.count();//返回找到的目录和文件的数量

qDebug() << "fileName                tsize";

while(iterator != list.end()){

qDebug() << (*iterator).fileName()<<"             "<<(*iterator).size();

iterator++;}

qDebug() << "当前目录: " << d.current();//返回应用程序当前目录。

qDebug() << "当前目录的绝对路径" << d.currentPath();//返回应用程序当前目录的绝对路径。

const QList<QString> list1 = d.entryList(); //返回这个目录中所有目录和文件的名称的列表

QList<QString>::const_iterator iterator1 = list1.begin();

while(iterator1 != list1.end()){

qDebug()<< (*iterator1);

iterator1++;

}

return a.exec();

}

测试结果

总结

1. QDir::entryList()会获取该目录下所有的子目录。

const QList<QString> list1 = d.entryList(); //返回这个目录中所有目录和文件的名称的列表

注意要用QLis<QString>类型接收。

2. QDir::entryInfoList()会获取该目录下所有目录和文件的QFileInfo对象的列表。

const QFileInfoList list = d.entryInfoList();    //返回这个目录中所有目录和文件的QFileInfo对象的列表

同样注意接收变量的类型  QFileInfoList,该类型是QFileInfo的list。

The QFileInfo class provides system-independent file information.

类UNIX系统里:

#ifdef Q_OS_UNIX

QFileInfo info1("/home/bob/bin/untabify");

info1.isSymLink();          // returns true

info1.absoluteFilePath();   // returns "/home/bob/bin/untabify"

info1.size();               // returns 56201

info1.symLinkTarget();      // returns "/opt/pretty++/bin/untabify"

QFileInfo info2(info1.symLinkTarget());

info2.isSymLink();          // returns false

info2.absoluteFilePath();   // returns "/opt/pretty++/bin/untabify"

info2.size();               // returns 56201

#endif

windows下:

#ifdef Q_OS_WIN

QFileInfo info1("C:\\Documents and Settings\\Bob\\untabify.lnk");

info1.isSymLink();          // returns true

info1.absoluteFilePath();   // returns "C:/Documents and Settings/Bob/untabify.lnk"

info1.size();               // returns 743

info1.symLinkTarget();      // returns "C:/Pretty++/untabify"

QFileInfo info2(info1.symLinkTarget());

info2.isSymLink();          // returns false

info2.absoluteFilePath();   // returns "C:/Pretty++/untabify"

info2.size();               // returns 63942

#endif

3. 设置文件滤波器

QChar QDir::separator () [static]

Returns the native directory separator: "/" under Unix (including Mac OS X) and "\" under Windows.

You do not need to use this function to build file paths. If you always use "/", Qt will translate your paths to conform to the underlying operating system. If you want to display paths to the user using their operating system's separator use toNativeSeparators().

bool QDir::setCurrent ( const QString & path ) [static]

Sets the application's current working directory to path. Returns true if the directory was successfully changed; otherwise returns false.

See also current(), currentPath(), home(), root(), and temp().

void QDir::setFilter ( Filters filters )

Sets the filter used by entryList() and entryInfoList() to filters. The filter is used to specify the kind of files that should be returned by entryList() and entryInfoList(). See QDir::Filter.

See also filter() and setNameFilters().

void QDir::setNameFilters ( const QStringList & nameFilters )

Sets the name filters used by entryList() and entryInfoList() to the list of filters specified by nameFilters.

Each name filter is a wildcard (globbing) filter that understands * and ? wildcards. (See QRegExp wildcard matching.)

For example, the following code sets three name filters on a QDir to ensure that only files with extensions typically used for C++ source files are listed:

QStringList filters;

filters << "*.cpp" << "*.cxx" << "*.cc";

dir.setNameFilters(filters);

QT目录遍历(QDir)相关推荐

  1. 【QT】遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名

    [QT]遍历文件夹和文件目录,并过滤和获取文件信息.后缀名.前缀名 前言: 需要在特定目录或磁盘下查找特定文件 一.筛选目录 (一)单一目录下遍历,筛选特定文件 QDir dir("./Sa ...

  2. php dir类,PHP基于dir类实现目录遍历删除

    这篇文章主要介绍了PHP使用内置dir类实现目录遍历删除的方法,涉及php中dir类的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了PHP使用内置dir类实现目录遍历删除的方法. ...

  3. nginx配置错误而导致目录遍历漏洞

    漏洞版本:nginx(Tested at 1.1.10) 漏洞描述:nginx是一款高性能的web服务器,使用非常广泛,其不仅经常被用作反向代理,也是一个 IMAP/POP3/SMTP 代理服务器. ...

  4. python遍历文件目录_python目录遍历

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我曾经写了c语言的遍历目录.php的遍历目录,今天来说一下python遍历目录, ...

  5. python3 文件内容搜索 文件名搜索 目录遍历

    目录 目录遍历 文件名搜索 文件内容搜索 关键字搜索整合 完整代码 目录遍历 首先我们来看如何实现目录遍历 目录遍历的过程很简单: 将目标路径作为当前目录 罗列出当前目录下的所有内容 判断每一个目标是 ...

  6. php多级遍历,php jquery实现无限级目录遍历展示代码

    前面有讲过一个目录遍历的例子,这个例子有一点不一样他可以利用php目录遍历出来的目录或文件进行一个树型的展示效果. 遍历出来的效果如下 程序代码 index.php 里面的jquery文件大家可百度下 ...

  7. 目录遍历漏洞:入侵检测php程序中的目录遍历漏洞,目录浏览(目录遍历)漏洞

    目录浏览(目录遍历)漏洞 来源:信管网 2019年08月26日 [所有评论] 目录浏览漏洞属于目录遍历漏洞的一种 目录浏览(目录遍历)漏洞 目录浏览漏洞是由于网站存在配置缺陷,导致网站目录可以被任意浏 ...

  8. php act index漏洞,浅析PHP程序中的目录遍历漏洞

    这类漏洞主要是存在与基于PHP+TXT结构的程序中,漏洞代码也是来自于一个国外的BLOG,代码如下: $act=$_GET['act']:if($act==''){ include("blo ...

  9. python目录遍历_python文件操作之目录遍历实例分析

    本文实例讲述了python文件操作之目录遍历的方法.分享给大家供大家参考.具体分析如下: Python的os模块,包含了普遍的操作系统功能,这里主要学习与路径相关的函数: os.listdir(dir ...

  10. Kali学习笔记31:目录遍历漏洞、文件包含漏洞

    文章的格式也许不是很好看,也没有什么合理的顺序 完全是想到什么写一些什么,但各个方面都涵盖到了 能耐下心看的朋友欢迎一起学习,大牛和杠精们请绕道 目录遍历漏洞: 应用程序如果有操作文件的功能,限制不严 ...

最新文章

  1. ssh中c3p0连接mysql_JSP+SSH+Mysql+C3P0实现的传智播客网上商城
  2. 继LSTM之父用世界模型来模拟2D赛车后,谷歌又推出全新世界模型助力导航:360度无死角,就问你怕了没?...
  3. 几个支持生成Python代码的UML工具
  4. 商品尺码规格和颜色需要支持双引号
  5. java 泛型嵌套泛型_Java泛型简介–第6部分
  6. python打开软件输入消息_用Python编写一个私人助理程序,为我们起草电子邮件!...
  7. 二次元福利适应个人引导页
  8. Memcached的安装与使用
  9. 北京活动预告丨来ACOUG 年会过个温暖的冬天吧!
  10. 3月国内网民地域分布12强:广东居首 江苏重回第二
  11. python的setheading什么意思_用Python告诉你什么是佩奇
  12. AndroidStudio安装之后虚拟机启动失败解决方法
  13. java学习笔记 01
  14. 拖拉机大战贺岁版发布
  15. 什么是数字化的马太效应
  16. 知道注册电子邮件的方法么?今天就告诉你邮箱申请免费注册的方法!
  17. kubeadm重新生成admin.conf
  18. 利率上浮100bp是什么意思,利率浮动值60BP什么意思
  19. MySQL数据库笔记
  20. iOS 卡顿原因及优化思路

热门文章

  1. SmtpJS 几行代码实现javascript发送邮件(记录)
  2. sxe增加服务器,sXe Injected 反作弊插件
  3. 银联卡跨行业务地区代码标准JSON版
  4. [面试] 步步为营:吉大学士的PG宝洁面经
  5. 项目验收的步骤和程序
  6. 牛客网华为机试题java,华为机试题
  7. 按键精灵手机助手学习笔记
  8. 物理计算机仿真实验报告,大学物理实验实验报告模板
  9. 软件项目管理课程总结
  10. instagram下载的工具instaloader