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

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

用到两个函数ParseDirectory 和CreatePathList

void ParseDirectory(string path, string filter)
                {    
                    string[] dirs = Directory.GetDirectories(path);//得到子目录
                    IEnumerator iter = dirs.GetEnumerator();
                    while(iter.MoveNext())
                    {
                        string str = (string)(iter.Current);
                        ParseDirectory(str, filter);
                    }
                    string[] files = Directory.GetFiles(path, filter);
                    if(files.Length > 0)
                    {
                        m_numFiles += files.Length;
                        m_pathList.Add(files);
                    }
}
string[] CreatePathList()
                {
                    if(m_numFiles <= 0)
                    {
                        return null;
                    }

                    string[] str = new string[m_numFiles];
                    int index = 0;

                    try
                    {
                        IEnumerator pathIter = m_pathList.GetEnumerator();
                        while(pathIter.MoveNext())
                        {
                            string[] ar = (string[])(pathIter.Current);
                            IEnumerator fileIter = ar.GetEnumerator();
                            while(fileIter.MoveNext())
                            {
                                str[index] = (string)(fileIter.Current);
                                ++index;
                            }
                        }
                    }
                    catch(Exception e)
                    {
                        return null;
                    }

                    return str;
                }

# 非递归实现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文件


string path="d:\\";    //目录名 也可以用相当路径
string filter="*.mp3";        //文件类型
 int m_numFiles=0;        //文件总数
 ArrayList m_pathList = new ArrayList();//包含所有文件路径的数组
string[] files;            //所有文件名
                
ParseDirectory(path, "*.mp3");
files=CreatePathList();        //生成文件名数组
                if(files == null)
                {
                    throw new Exception(String.Concat("No file found in ", path));
                }

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

搜索目录里所有文件(包括子目录)相关推荐

  1. c# 遍历文件夹深度_C#.NET中遍历指定目录下的文件(及所有子目录及子目录里更深层目录里的文件)...

    //遍历一个目录下所有的文件列表,代码实例 DirectoryInfo dir = new DirectoryInfo(folderName); var list = GetAll(dir); /// ...

  2. php如何将读取到的mysql内容按发布的日期分割显示_php如何读取文件夹目录里的文件并按照日期,大小,名称排序...

    最近用到的php读取文件夹目录里的文件,并按照日期,大小,名称排序,所以写了一个方法,备用. function dir_size($dir,$url){ $dh = @opendir($dir);   ...

  3. 用计算机查找文件地址吗,如何快速搜索电脑里的文件( 快速准确定位和查找电脑文件位置的方法...

    今天给大家带来如何快速搜索电脑里的文件(,快速准确定位和查找电脑文件位置的方法,让您轻松解决问题. 怎样快速搜索电脑里的文件 如何快速准确定位和查找电脑文件位.我们在使用电脑的时候,经常需要进行一些操 ...

  4. python 遍历搜索 目录下所有文件

    python 遍历搜索 目录下所有文件 import osdef search_dir_all_files(input_dir):files_list=[]for root, dirs, files ...

  5. 搜索目录下 匹配文件中 最新的文件 路径

    搜索目录下 匹配文件中 最新的文件 路径 1  #!/usr/bin/python 2  import os 3  import glob 4  path = "/homeyufei/tes ...

  6. linux 目录中的文件和子目录生成jar包文件的方法

    linux 目录中的文件和子目录生成jar包文件的方法 jar cvf spark-libs.jar -C //usr/cwgis/app/spark/jars/ .//注意:.点前面有一个空格 [r ...

  7. 如何搜索百度云盘里的文件

    如何搜索百度云盘里的文件        其实很很简单,我悄悄用了很久了,可以说是屡试不爽,想要查找什么资源,百度,谷歌双引擎搜索.绝对不骗 人,看我下面的演示.只需要输入一个地址即可: 1.首先输入地 ...

  8. linux命令如何删除子目录文件,Linux如何删除目录下所有文件包括子目录

    Linux删除目录下所有文件包括子目录方法:rm -rf 目录名. Linux操作系统是UNIX操作系统的一种克隆系统,它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间).以后借助于 ...

  9. QQ目录里哪个文件是记录系统消息的?

    CardMgr? Config?ewh? MsgEx? notes? ShareInfo? User? VQQ? 还是其他的文件? 解答: 应该是MsgEx.db,不过这个也难说,至今没有统一出来到底 ...

最新文章

  1. 如何制作EDM邮件的内容
  2. java 数据反射_基本操作--反射填充数据
  3. 【NOIP2007】【Luogu1094】纪念品分组(贪心,乘船问题)
  4. 【新功能,新插件】-全新来袭,CSDN浏览器助手这一款无广告干净界面插件你值得拥有!
  5. Windows下打包maven项目,编写bat脚本,dos命令在后台运行与关闭
  6. 拉格朗日乘子法 KKT条件
  7. 验证java 递增不是原子操作
  8. java spring框架 注解_spring框架之注解的使用
  9. Spring Security记住我功能之潜在的账号盗取风险
  10. 微型计算机三级项目,微机原理三级项目.doc
  11. Android Jetpack组件(九)DataStore
  12. PAT-厘米换算英尺英寸(简单编程题)
  13. 多张图片合成一张jpg工具_将多张图片合并成一张图片的小工具Collagerator
  14. Markdown|书单
  15. 福利来了!html类名大合集一,需要的快收藏!
  16. 英语口语8000句 pdf_英语口语 — Track 01表达技巧
  17. 批量去除PDF的水印(完全免费)
  18. 剪刀石头布二(ptwo) 时限:1s 空间:256m
  19. SI512国产13.56MHz低功耗NFC前端芯片替代PN532/PN512
  20. (iOS) App防抓包

热门文章

  1. (五):C++分布式实时应用框架——微服务架构的演进
  2. 单点登录系统cas资料汇总
  3. 1、EJB基本概念及运行环境
  4. android下创建文件夹和修改其权限的方法
  5. HTTP详解(转载)
  6. [问题]魔兽双击地面回到选中的单位
  7. asp.net通用用户初始化类,登录后初始化,随时随地可以应用
  8. Ping, IPConfig, Format, Netstat, etc. Not Recognized as Commands
  9. 深度学习简介(一)——卷积神经网络
  10. 瑞芯微最新智能音箱低成本方案RK2108