惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

F
Fortinet All Blogs
V
Visual Studio Blog
T
Tor Project blog
量子位
Jina AI
Jina AI
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
有赞技术团队
有赞技术团队
博客园 - 司徒正美
博客园_首页
罗磊的独立博客
美团技术团队
人人都是产品经理
人人都是产品经理
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
C
Check Point Blog
博客园 - 聂微东
爱范儿
爱范儿
Schneier on Security
Schneier on Security
T
Threat Research - Cisco Blogs
T
Tailwind CSS Blog
L
LINUX DO - 热门话题
大猫的无限游戏
大猫的无限游戏
V
Vulnerabilities – Threatpost
C
Cisco Blogs
GbyAI
GbyAI
Spread Privacy
Spread Privacy
博客园 - 叶小钗
博客园 - 【当耐特】
T
Tenable Blog
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
J
Java Code Geeks
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
宝玉的分享
宝玉的分享
Microsoft Azure Blog
Microsoft Azure Blog
Simon Willison's Weblog
Simon Willison's Weblog
N
Netflix TechBlog - Medium
T
The Exploit Database - CXSecurity.com
腾讯CDC
C
CERT Recently Published Vulnerability Notes
P
Proofpoint News Feed
阮一峰的网络日志
阮一峰的网络日志
Scott Helme
Scott Helme
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Martin Fowler
Martin Fowler

博客园 - 小柯

Enterprise Library 4.1 Configuration的使用 C#模仿QQ截图功能 asp.net 中 DropDownList 加入可输入功能解决方案 - 小柯 解决SQL Server Management Studio Express为英文的问题 Visual Studio 2008 简体中文正式版下载及序列号(无使用期限限制,正式版) 程序人生--一个程序员对学弟学妹建议(转) .NET 换肤软件 IrisSkin 2.0 破解版下载及多款皮肤下载 (转)JavaScript 弹出窗口总结 (转)JavaScript常用判断函数(正则表达式版) C#中常用的经典文件操作方法 反编译工具Reflector下载(集成两个常用.net插件,FileGenerator和FileDisassembler) C#遍历目录树的递归 在ASP.NET中自动给URL加上超链接 ASP.NET 中 Cookie 的基本知识 ASP.NET2.0统计图表(转) ASP.NET获取IP及电脑名等信息的简单方法+通用类文件源码 (转)了解你的兵器---VS2005 快捷键 Asp.Net Ajax系列(二) 局部页面呈现(Partial-Page Rendering) Asp.net Ajax 系列(一) ----------用了再说
C#遍历指定目录的递归(完美改进版+完整程序源码)
小柯 · 2007-06-13 · via 博客园 - 小柯

昨天写了一下遍历目录树的思路和核心代码,今天将其实践化了一下,做了个实际的例子,遍历指定目录下的所有文件和文件夹,并将其按层次归类显示,对文件夹有标志提示,将文件夹与文件区分了出来。

下面是改进版的核心方法代码:

 1public ArrayList al = new ArrayList();//定义存储文件和文件夹名的数组
 2    public int aaa = 0;//定义标志位参数,递归时判断该参数,若不为0则非第一次递归
 3    public void GetAllDirList(string strBaseDir)
 4    {
 5        DirectoryInfo di = new DirectoryInfo(strBaseDir);
 6        DirectoryInfo[] diA = di.GetDirectories();
 7        if(aaa==0)
 8        {
 9        FileInfo[] fis2 = di.GetFiles();   //有关目录下的文件   
10        for (int i2 = 0; i2 < fis2.Length; i2++)
11        {
12            al.Add(fis2[i2].FullName);
13            //fis2[i2].FullName是根目录中文件的绝对地址,把它记录在ArrayList中
14        }

15        }

16        for (int i = 0; i < diA.Length; i++)
17        {
18                aaa++;
19                al.Add(diA[i].FullName + "\t<目录>");
20                //diA[i].FullName是某个子目录的绝对地址,把它记录在ArrayList中
21                DirectoryInfo di1 = new DirectoryInfo(diA[i].FullName);
22                DirectoryInfo[] diA1 = di1.GetDirectories();
23                FileInfo[] fis1 = di1.GetFiles();   //有关目录下的文件   
24                    for (int ii = 0; ii < fis1.Length;ii++ )
25                    {
26                        al.Add(fis1[ii].FullName);
27                        //fis1[ii].FullName是某个子目录中文件的绝对地址,把它记录在ArrayList中
28
29                    }
   
30                GetAllDirList(diA[i].FullName);
31                //注意:递归了。逻辑思维正常的人应该能反应过来
32        }

33                
34    }

具体原理每行关键核心代码后都有注释,大家应该可以看明白的
下面附上这个方法的使用范例(例子中有两个方法,第一个按钮只遍历指定目录下一级层次;第二个按钮是调用上述方法,遍历了指定目录下的所有层次文件夹和文件)

源代码,点击下载