搜索目录里所有文件(包括子目录)


搜索目录里所有文件(包括子目录)


资料来源:http://www.cnblogs.com/jjwwww/archive/2004/09/04/39559.aspx

用到两个函数ParseDirectory 和CreatePathList


None.gifvoid ParseDirectory(string path, string filter)
ExpandedBlockStart.gifContractedBlock.gif                
dot.gif{    
InBlock.gif                    
string[] dirs = Directory.GetDirectories(path);//得到子目录
InBlock.gif
                    IEnumerator iter = dirs.GetEnumerator();
InBlock.gif                    
while(iter.MoveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        
string str = (string)(iter.Current);
InBlock.gif                        ParseDirectory(str, filter);
ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
string[] files = Directory.GetFiles(path, filter);
InBlock.gif                    
if(files.Length > 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        m_numFiles 
+= files.Length;
InBlock.gif                        m_pathList.Add(files);
ExpandedSubBlockEnd.gif                    }

ExpandedBlockEnd.gif}

None.gifstring[] CreatePathList()
ExpandedBlockStart.gifContractedBlock.gif                
dot.gif{
InBlock.gif                    
if(m_numFiles <= 0)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        
return null;
ExpandedSubBlockEnd.gif                    }

InBlock.gif
InBlock.gif                    
string[] str = new string[m_numFiles];
InBlock.gif                    
int index = 0;
InBlock.gif
InBlock.gif                    
try
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        IEnumerator pathIter 
= m_pathList.GetEnumerator();
InBlock.gif                        
while(pathIter.MoveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif                        
dot.gif{
InBlock.gif                            
string[] ar = (string[])(pathIter.Current);
InBlock.gif                            IEnumerator fileIter 
= ar.GetEnumerator();
InBlock.gif                            
while(fileIter.MoveNext())
ExpandedSubBlockStart.gifContractedSubBlock.gif                            
dot.gif{
InBlock.gif                                str[index] 
= (string)(fileIter.Current);
InBlock.gif                                
++index;
ExpandedSubBlockEnd.gif                            }

ExpandedSubBlockEnd.gif                        }

ExpandedSubBlockEnd.gif                    }

InBlock.gif                    
catch(Exception e)
ExpandedSubBlockStart.gifContractedSubBlock.gif                    
dot.gif{
InBlock.gif                        
return null;
ExpandedSubBlockEnd.gif                    }

InBlock.gif
InBlock.gif                    
return str;
ExpandedBlockEnd.gif                }



# 非递归实现re: 搜索目录里所有文件(包括子目录)

void ParseDirectory(string path, string filter)
{
Queue q=new Queue();
q.Enqueue(path);
while(q.Count > 0) {
string path=(string)q.Dequeue();
string[] files = Directory.GetFiles(path,filter);
if(files.Length > 0) {
m_numFiles += files.Length;
m_pathList.Add(files);
}

string[] dirs = Directory.GetDirectories(path);
foreach(string dir in dirs){
q.Enqueue(dir);
}
}
}







使用范例:如果要查找的:d目录下所有mp3文件
None.gif
None.gif
string path="d:\\";    //目录名 也可以用相当路径
None.gif
string filter="*.mp3";        //文件类型
None.gif
 int m_numFiles=0;        //文件总数
None.gif
 ArrayList m_pathList = new ArrayList();//包含所有文件路径的数组None.gif
None.gif
string[] files;            //所有文件名
None.gif
                
None.gifParseDirectory(path, 
"*.mp3");
None.giffiles
=CreatePathList();        //生成文件名数组
None.gif
                if(files == null)
ExpandedBlockStart.gifContractedBlock.gif                
dot.gif{
InBlock.gif                    
throw new Exception(String.Concat("No file found in ", path));
ExpandedBlockEnd.gif                }

None.gif




转载于:https://www.cnblogs.com/soldier/archive/2004/09/06/40148.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/277369.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一张图理解buffer与cache

转载于:https://blog.51cto.com/11193863/2169166

oracle服务器不识别tc服务,记一次ORACLE无法启动登陆事故

打开XSHELL 登陆ORACLE用户1.sqlplus scott/scott 提示登陆失败2.sqplus / as sysdba 启动数据库提示3.查找日志操作日志&#xff1a;$ORACLE_HOME/startup.log启动日志&#xff1a;$ORACLE_BASE/diag/rdbms/ora11g/ora11g/trace/alert_ora11g.log (ora11g为SID值)启动日志如果…

重构(Refactoring)技巧读书笔记 之二

重构&#xff08;Refactoring&#xff09;技巧读书笔记 之二<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />General Refactoring Tips, Part 2本文继续《重构&#xff08;Refactoring&#xff09;技巧读书笔记 之一》&#xff…

史上最全的Angular.js 的学习资源

Angular.js 的一些学习资源 基础 官方&#xff1a; http://docs.angularjs.org angularjs官方网站已被墙&#xff0c;可看 http://www.ngnice.com/&#xff1b;官方zip下载包 http://best.factj.com/dolymood/angular-packages&#xff0c;已增加docs服务&#xff0c;输入地址即…

BMP位图之8位位图(三)

起始结构 typedef struct tagBITMAPFILEHEADER { WORD bfType; //类型名&#xff0c;字符串“BM”&#xff0c; DWORD bfSize; //文件大小 WORD bfReserved1; //保留字 WORD bfReserved2; //保留字 DWORD bfOffBits; //实际位图数据的偏移字节数&#xff0c;即前三个部分长度之…

DNN 汉化中的问题????

今天看到了一份已经汉化过的DNN但是比较奇怪&#xff0c;当第一次运行后我所指定的新数据库中并没有添加新的内容&#xff0c;但是网站上的确是已经汉化过了的&#xff0c;不知道它把汉化的内容放到了哪里&#xff1f;&#xff1f;&#xff1f; 另外他所汉化界面的地方&#x…

php 打印对象详细信息,php打印显示数组与对象的函数详解

php打印显示数组与对象的函数详解发布于 2014-11-17 18:55:49 | 699 次阅读 | 评论: 0 | 来源: 网友投递PHP开源脚本语言PHP(外文名: Hypertext Preprocessor&#xff0c;中文名&#xff1a;“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特点&…

ios开发-调用系统自带手势

在 iPhone 或 iPad 的开发中&#xff0c;除了用 touchesBegan / touchesMoved / touchesEnded 这组方法来控制使用者的手指触控外&#xff0c;也可以用 UIGestureRecognizer 的衍生类別来进行判断。用 UIGestureRecognizer 的好处在于有现成的手势&#xff0c;开发者不用自己计…

Node.js 事件循环

Node.js 事件循环 Node.js 是单进程单线程应用程序&#xff0c;但是因为 V8 引擎提供的异步执行回调接口&#xff0c;通过这些接口可以处理大量的并发&#xff0c;所以性能非常高。 Node.js 几乎每一个 API 都是支持回调函数的。 Node.js 基本上所有的事件机制都是用设计模式中…

全国翻译专业资格(水平)考试

http://www.spta.gov.cn/moreksxx.jsp?lmCodeA02010205转载于:https://www.cnblogs.com/Danilo/archive/2004/10/31/58821.html

linux文件句柄,【LINUX】使用lsof处理文件恢复、句柄以及空间释放问题

曾经在生产上遇到过一个df 和 du出现的结果不一致的问题&#xff0c;为了排查到底是哪个进程占用了文件句柄&#xff0c;导致空间未释放&#xff0c;首先在linux上面&#xff0c;一切皆文件&#xff0c;这个问题可以使用lsof这个BT的命令来处理(这个哈还可以来查询文件句柄泄露…

android天气查询(二)之网络json数据的获取

前面一篇文章介绍了如何使用ksoap获取天气信息&#xff0c;但是使用的网络资源受到了限制&#xff0c;所以我们这里会采用第二种方法&#xff0c;可以无限制的获取。http://m.weather.com.cn/data/101010100.html 但是对应的101010100(北京)我们怎么获取呢&#xff0c;还有就是…

累.....

今天我真的蔫了&#xff0c;好累&#xff0c;脑子也好浊&#xff0c;但是还好&#xff0c;最终达到了预期的目的。我终于把henry的dataGrid实现了&#xff0c;犯了低级错误&#xff0c;和好多人讨论&#xff0c;但最终还是henry解决的。那一刻&#xff0c;真的好爽&#xff0c;…

001-pro ant design 升级2.0后变更

一、更新点 1、目录调整 2、本地代理服务器调整 roadhog→umi 配置方式 在这个config/config.js配置 "proxy": { "/api": { "target": "http://jsonplaceholder.typicode.com/", "changeOrigin": true, "pathRewrite&q…

linux cp 时 略过文件,CentOS下执行cp命令式提示略过文件夹

今天在CentOS下复制一个文件夹到另一个文件夹的时候cp ./res /usr 的时候出现了问题&#xff0c;提示我的是&#xff1a;cp略过了文件夹后来我找了一下在网上search了一下CP命令的用法&#xff1a;CP命令该命令的功能是将给出的文件或目录拷贝到另一文件或目录中&#xff0c;同…

属性页中的ON_UPDATE_COMMAND_UI

我前面翻译了一篇文章简单的谈了一下在对话框处理ON_UPDATE_COMMAND_UI 消息。又在www.codeguru.com上看到在属性页中处理ON_UPDATE_COMMAND_UI 消息的方法和在对话框中稍有不同。两者的处理大体上一样。只是在属性页中还需要一个步骤。需要从CPropertySheet派生类&#xff0c;…

linux基础命令rpm,rpm常用命令集合1

提要&#xff1a;RPM 是 Red Hat Package Manager 的缩写&#xff0c;原意是Red Hat 软件包管理&#xff1b;本文介绍RPM&#xff0c;并结合实例来解说RPM手工安装、查询等应用&#xff1b;正文&#xff1a;RPM包管理的用途&#xff1b;1、可以安装、删除、升级和管理软件&…

hibernate详解

Hibernate原理与应用 主要内容 1、引入 2、安装配置 3、基本概念和CURD 4、HQL和Criteria 5、关联映射 6、继承映射 7、集合映射 8、懒加载 9、缓存 10、事务 11、其他 12、Hibernate不适合的场景 13、与JPA的集成(annotation方式) 14、最佳实践 1、引入 模型不匹配(阻抗不匹配…

Csharp+Asp.net系列教程(四)

迈克老猫 来自&#xff1a;老猫的理想 本教程参考C#和ASP.NET程序设计教程撰写&#xff0c;有什么不足之处请大家指出&#xff0c;或在老猫的理想BLOG留言。 这次简述一下操作符 1.算术操作符 算术操作符包括加()、减(-)、乘(*)、除(/)和求余(%)。加减操作符…

linux 脚本 写更新,用Shell写的游戏客户端更新脚本

#!/bin/sh########################################### 客户端版本更新系统########################################### CLIENT_INIT_VERSION 客户端新版本&#xff0c;默认是0# CLIENT_OLD_VERSION 客户端旧版本(存放在VERSION_FILE指定的文件中)&#xff0c;当没有时取CL…