热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[代码分享]wxWidgets非递归方式遍历文件

wxWidgets非递归方式遍历文件在wxDir类中,wxWidgets已经给我们提供了wxDir::GetAllFiles函数和wxDir::Traverse来深度遍历某

wxWidgets 非递归方式遍历文件

 



在 wxDir 类中, wxWidgets已经给我们提供了 wxDir::GetAllFiles 函数 和 wxDir::Traverse 来深度遍历某个文件夹下的所有文件, 这里提供的是一种通过 wxDir::GetFirstwxDir::GetNext 方法实现的非递归遍历方案, 其思路如下:

    1>. 建立一个空的目录路径队列;
    2>. 将待遍历的根目录路径添加到目录队列中;
    3>. 取出队列前端的路径进行遍历, 若遇到的是目录则将其添加到目录队列中, 否则输出;
    4>. 当队列前端的目录遍历完成后将其从队列中删除;
    5>. 重复 3 - 4 步骤的操作, 直至目录队列为空。
    
    
用 C 语言代码描述:

 1 #include 
 2 #include "wx/filefn.h"
 3 #include "wx/dir.h"
 4 
 5 
 6 int GetAllFilePath( wxString rootPath )
 7 {
 8     wxArrayString dirItems;                //目录队列
 9     dirItems.Add( rootPath );            //将待遍历的目录路径添加到目录队列中
10 
11     wxString filename;    bool cont;    wxString tempPath;
12     while( dirItems.GetCount() )        //当目录队列不为空时执行
13     {
14         wxDir dir( dirItems[0] );        //打开队列前端目录路径
15         if( !dir.IsOpened() )
16             return -1;
17         
18         cOnt= dir.GetFirst( &filename );                        //获取首个文件
19         while ( cont )
20         {
21             tempPath = dirItems[0] + "\\" + filename;            //合成 filename 的完整路径
22             if( dir.Exists( tempPath ) )            //判断 tempPath 是否为目录
23                 dirItems.Add( tempPath );            //为目录时则添加到目录队列
24             else
25                 printf("%s\n", tempPath );            //否则输出该文件路径
26             
27             cOnt= dir.GetNext(&filename);            //获取下一个文件
28         }
29         dirItems.RemoveAt(0);                //当前目录遍历完成后将其从目录队列中删除
30     }
31 
32     return 1;
33 }
34 
35 
36 int main()
37 {
38     GetAllFilePath( _T("D:\\Project\\wxWidgets") );
39 
40     return 0;
41 }

 

 



更多关于 wxWidgets 文件/文件夹的内容:
    [译] wxWidgets - File functions - 文件/文件夹函数


    [代码分享] wxWidgets - wxDir 遍历文件


    [译] wxWidgets - wxDir
    
    
    


--------------------



wid, 2013.03.08



上一篇: [代码分享] wxWidgets - wxDir 遍历文件



 


推荐阅读
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了在Android开发中使用软引用和弱引用的应用。如果一个对象只具有软引用,那么只有在内存不够的情况下才会被回收,可以用来实现内存敏感的高速缓存;而如果一个对象只具有弱引用,不管内存是否足够,都会被垃圾回收器回收。软引用和弱引用还可以与引用队列联合使用,当被引用的对象被回收时,会将引用加入到关联的引用队列中。软引用和弱引用的根本区别在于生命周期的长短,弱引用的对象可能随时被回收,而软引用的对象只有在内存不够时才会被回收。 ... [详细]
  • BZOJ1233 干草堆单调队列优化DP
    本文介绍了一个关于干草堆摆放的问题,通过使用单调队列来优化DP算法,求解最多可以叠几层干草堆。具体的解题思路和转移方程在文章中进行了详细说明,并给出了相应的代码示例。 ... [详细]
  • 本文整理了Java中org.gwtbootstrap3.client.ui.Icon.addDomHandler()方法的一些代码示例,展示了Icon.ad ... [详细]
  • vue使用
    关键词: ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 李逍遥寻找仙药的迷阵之旅
    本文讲述了少年李逍遥为了救治婶婶的病情,前往仙灵岛寻找仙药的故事。他需要穿越一个由M×N个方格组成的迷阵,有些方格内有怪物,有些方格是安全的。李逍遥需要避开有怪物的方格,并经过最少的方格,找到仙药。在寻找的过程中,他还会遇到神秘人物。本文提供了一个迷阵样例及李逍遥找到仙药的路线。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • macOS Big Sur全新设计大版本更新,10+个值得关注的新功能
    本文介绍了Apple发布的新一代操作系统macOS Big Sur,该系统采用全新的界面设计,包括图标、应用界面、程序坞和菜单栏等方面的变化。新系统还增加了通知中心、桌面小组件、强化的Safari浏览器以及隐私保护等多项功能。文章指出,macOS Big Sur的设计与iPadOS越来越接近,结合了去年iPadOS对鼠标的完善等功能。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
author-avatar
若涵她娘_124
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有