说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

c#采用递归非递归两种方式遍历目录下所有文件

HTML文档下载 WORD文档下载 PDF文档下载
递归有其劣势,会遭到某些人的歧视,这里给出递归,非递归两种方案。

 

一、递归方式遍历目录

 

public void GetFiles1(string pathname){	string[] subFiles = Directory.GetFiles(pathname);	foreach (string subFile in subFiles)	{		Console.WriteLine(subFile);	}	string[] subDirs = Directory.GetDirectories(pathname);	foreach (string subDir in subDirs)	{		GetFiles1(subDir);	}}

二、非递归方式遍历目录

采用堆栈,将目录压入堆栈实现遍历。

public void GetFiles2(string pathname){	Stack<string> skDir = new Stack<string>();	skDir.Push(pathname);	while (skDir.Count > 0)	{		pathname = skDir.Pop();		string[] subDirs = Directory.GetDirectories(pathname);		string[] subFiles = Directory.GetFiles(pathname);		if (subDirs != null)		{			for (int i = 0; i < subDirs.Length; i++)			{				//string dirName = Path.GetFileName(subDirs[i]);				skDir.Push(subDirs[i]);			}		}		if (subFiles != null)		{			for (int i = 0; i < subFiles.Length; i++)			{				//string fileName = Path.GetFileName(subFiles[i]);				// 处理文件				Console.WriteLine(subFiles[i]);			}		}	}}

调用方式:

GetFiles2("c:\\windows");

 

如果希望在遍历的过程中取得目录或文件的详细信息,可以用DirectoryInfo来代替string:

DirectoryInfo di = new DirectoryInfo(pathname);

DirectoryInfo[] diinfo = di.GetDirectories();

FileInfo[] fiinfo = di.GetFiles();

 

新一代IDE Light Table开源:让编程工作更简单 图片应用也能高大上,看Cooliris如何玩转无人机 拥抱Spark,机遇无限——Spark Summit 2013精彩回顾 1月10日:改变世界的iPhone七岁了,你是传奇! 同洲电子推出首款手机操作系统960OS 免费授权使用 如何在Windows 8.1的IE11中打开同步选项卡? 25年老对手评价微软:换CEO可行,但是太迟了 【PPT集萃】十位一线专家分享Spark现状与未来(三) 万元奖品等你拿!2014创客118新年大Party! Firefox OS的2013回顾和2014展望 Strom8 CEO:搞好手游开发,合伙人很重要 2013年Q4全球PC出货量同比下滑6.9% 已连续下滑七个季度 一周消息树:2013年十大产品、图书、公司盘点 专访Wunderlist主设计师Jan Martin:永远不要盲目跟风流行趋势 研发周报:超实用的JavaScript技巧及最佳实践 2013最吃香的技能:Java称霸、Android势头正猛 移动周报:最火原型设计工具盘点 “京东电商云”起航,零售企业及品牌商是重点 教育乃立国之本:教育类开源项目大汇集 Hugo Barra首度谈离开谷歌后在中国工作的感受 对中国赞不绝口 母婴行业最早试水者 优谈宝宝借助轻应用全面布局移动产品线 腾讯云平台部总经理纪顺友:微云将彻底迈过文件传输的门槛 豌豆“荚”油!B轮融资1.2亿美元的豌豆荚 2013年终盘点:10款最精巧的硬件开发板 SquareWear:可替代Lilypad Arduino的开发板 开放数据:2014年最热门的竞争领域 IE11虚拟机免费面向广大开发者 九城搭建的一个以Hadoop为基础的大数据平台 Windows 8复杂性的代价到底有多大? 在发布前,第一代iPhone其实并不完善 市场占有率调查:iOS 7秒杀Android 4.4 续《打开文件对话窗》的问题!请问我怎样把用户选择的文件上传到服务器的数据库中 各位高手:火速急救!!怎么解决如此sql报错信息:‘列前缀'测试'与查询中所用的表名或别名不匹配’?? 请教一个关于用internal登陆时候的问题 怎样在一台机器的listener.ora中配置多个listener???? 关于拦截文件操作的API的钩子程序求教:qq:55020921 请教各位高手:有关page.server.execute()的问题? why???为什么?? 怎样删除记录!并记录都为NULL的! 怎么得到自身的文件名?急 急啊!请教大虾:如何用Img控件显示数据库里的二进制图像文件?? 请问,UBB代码的问题. 女朋友中标怎么办? 电影收费网站帐号共享,喜欢看电影的朋友进来。。。 大家做的基于GIS的软件,都实现一些什么功能啊?来者有分 我想用delphi在前端输入7位小数点,怎幺做? 求助 喜欢CS的朋友请进来 各位高手:IIS 不解析asp页面是什么原因? 我想用delphi在前端输入7位小数点,怎幺做? sql7数据库使用中的奇怪错误!!! 谁能告诉我这是怎么回事啊?急!在线等,分不够在加,马上解决马上结恬! 怎样把日期转化为星期 一个关于建立文件管理窗口的问题 我想在3dmax中的立方体顶面贴图,其他面不动,如何实现? 如何在DataGrid中加入CheckBox,并确定是否被选中?急!!! 关于用户自定义page类的问题 存储过程中IF EXISTS(select @result=aaa from tbl)提示等号附近有语法错误!!! 请问除了设置Anchor属性外如何保证窗体放大后组件的位置和大小? 如何在BCB中动态创建对象? SOS 救火 帮忙看个错,数据库连接问题 看看这个xml怎么用xsl解析 在DELPHI中,怎么遍历相同的控件? 一个简单的问题---在线等 在线等待:如何捕捉listctrl垂直滚动条的点击事件? 控件分类管理 急求一个递归统计函数,能解决者马上给分!!! 如何在ie中只打印iframe里面的页面内容 求select语句 请jennifergiant来领分,谢谢 如何将在内存中创建的BMP文件加载到页面上??? 帮忙看个错,ORA-00600 那里可以下载测试工具(Loadrunner,testdirector) 如何写一个往数据库里插入记录的公共模块啊? 文本两边对齐 请问sqlserver2000中bit类型值怎样表示 谁有jspsmart 上传组件。我上不了jspsmart.com ,好心人给我发一个!!! 时间格式有误,不知是何原因? 怎样开、关进程!(不是线程)? 今年高考的一篇旷世奇文 cnn连接怎么单独写出来,让Sub或Function调用?不用每次都写一次连接, 请附上Code ,谢谢 HPB235是什么意思? 安钢集团和安钢股份是什么关系 什么叫差向量?为什么BA→-BC→-=CA→-啊啊啊啊啊? i am sure the boring fellow is going to talk about putting in commas的汉译 谢谢大哥大姐们 帮帮忙、大哥大姐们______________甲乙丙丁四人合作加工一批零件,甲加工的是其余三人加工的2分之1,乙加工的零件是其余三人的3分之1,丙加工的是其余三人的5分之1,丁加工30个.这批零件共多少 大哥大姐们 求大哥大姐们 大哥大姐们帮我 多少人里才能有一个真正理解相对论的? scrooge was ashamed and sad to hear his own words spoken by the spirit.里面spoken by the spirit.做什么成分, 卜拉希米称叙过渡进程由叙有关各方决定法国宣布4名在尼日尔被绑架法国人获释美国将继续对中日消毒剂进行贸易救济调美政府官员首度为医改网站故障道歉欧盟多瑙河战略年度论坛在罗马尼亚落幕美国得州一男子五地疯狂射杀 致其母在北京“最牛违建”拆除进度缓慢 房主称中央巡视组年底前对军队巡查 在武警设民警枪击米粉店主 传因“不卖奶茶”越南网络活跃人士因散播不利于政府消息美媒称美无人机炸死索马里青年党高官打击假“丐帮” 要纳入法治常态本报推荐“堕胎后买房买车”不兑现惹恼情妇 小吃枣子没吐核 1岁娃肠被刺穿“我有‘口型辨认’的特异功能”信息超市 挑你所需肺脏“罢工”9天 老人命悬一线希望更多人能常提“核心议题”“功夫老丈”护婿心切 救场时亮出双截陆毅贝儿配音《蜡笔总动员》周五上映今年苏州计划招录720名公务员
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘