当前位置:首页 > C#

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

happyfhb14年前 (2012-12-30)C#1825
摘要: 经典中的经典。 一 递归遍历参考:http://www.fenghaibin.com/post/1025.html也可以使用这种方法public void GetFiles1(string pathname) { string[…

 经典中的经典。

 

一 递归遍历

参考:http://www.fenghaibin.com/post/1025.html

也可以使用这种方法

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);         
    }     
}

 

二 非递归 在这里重点感谢 http://www.okbase.net/doc/details/2583 的作者 我在此作者基础上增加了 对无法访问目录的try 即使遇到不可访问目录也可以轻松跳过

//此函数采用非递归方式遍历问题 是所有中最好的遍历方法     
public void GetAllDirList(string pathname)     
{     
    Stack<string> skDir = new Stack<string>();       
    skDir.Push(pathname);     
    while (skDir.Count > 0)     
    {     
        pathname = skDir.Pop();     
        try
        {     
            string[] subDirs = Directory.GetDirectories(pathname);     
            string[] subFiles = Directory.GetFiles(pathname);     
            if (subDirs != null)     
            {     
                for (int i = 0; i < subDirs.Length; i++)     
                {                   
                    skDir.Push(subDirs[i]);     
                }     
           
                if (subFiles != null)     
                {     
                    for (int i = 0; i < subFiles.Length; i++)     
                    {                    
                        listBox1.Items.Add(subFiles[i]);     
                    }     
                }     
            }     
        }     
        catch (Exception ex) { }// 捕抓错误 什么都不做     
                        
    }     
}

 

扫描二维码推送至手机访问。

版权声明:本文由海海日记-冯海滨博客发布,如需转载请注明出处。

本文链接:http://www.fenghaibin.com/?id=1027

“c#采用递归非递归两种方式遍历目录下所有文件” 的相关文章

传智播客.Net精品就业班培训专区目录

[传智播客.Net视频]第1季C#编程基础[传智播客.Net视频]第2季C#面向对象基础    [传智播客.Net视频]第3季WinForm基础  [传智播客.Net视频]第4季SQL从入门到提高    [传智播客.Net视频]第5季ADO.Net&…

学习心得 数据库连接类的书写规范

一般的规范都是建立3个类文件类1:字段(属性)model类2:方法(函数) dal类3:辅助或者就是 本来可以直接通过dal调用的方法 我在重写一遍 起中转作用 可以使程序更加清晰  bll…

C# 编写 Windows服务

. 新建一个项目2. 从一个可用的项目模板列表当中选择Windows服务3. 设计器会以设计模式打开4. 从工具箱的组件表当中拖动一个Timer对象到这个设计表面上 (注意: 工具箱中的timer 都是不对的,需要另行添加 详见方法 )&n…

Windows服务程序的编写、调试、部署

Windows服务程序的编写、调试、部署

L 基本概念什么是Windows服务?作为.net开发人员,平常写的都是winform程序或者asp.net程序,可能对Windows服务程序接触的不多,下面我摘了个百度文献的解释给大家:Microsoft Windows 服务(即以前的NT服务)使您能够创建在它们自己…

C#如何检测指定的Windows服务是否启动

C#如何检测指定的Windows服务是否启动

 在项目中,特别是安装项目中我们经常要判断一些服务是否启动(判断SQL Server是否启动最常见),在.net中我们如何判断指定的Windows服务是否启动呢?首先要知道Windows服务的显示名称,这里以IIS检测为例,我们知道IIS的显示名称是"IIS Admin"…

错误:无法作为数据库主体执行,因为主体 "dbo" 不存在、无法模拟这种类型的主体,或您没有所需的权限解决方案

解决办法:USE 出问题的库名; EXEC sp_changedbowner '数据库系统管理员';  数据库系统管理员 一般是 sa转自 http://chenhuablog.blog.sohu.com/160966216.html…

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。