C# -- 使用递归列出文件夹目录及目录下的文件

使用递归列出文件夹目录及目录的下文件

1.使用递归列出文件夹目录及目录下文件,并将文件目录结构在TreeView控件中显示出来。

新建一个WinForm应用程序,放置一个TreeView控件:

代码实现:在Form_load的时候,调用递归方法加载文件目录结构在TreeView控件中

 1         private void Form1_Load(object sender, EventArgs e)
 2         {
 3             //文件夹路径
 4             string path = "D:\\Notepad++";
 5
 6             //TreeView根节点
 7             TreeNode node = treeView1.Nodes.Add(path);
 8
 9             //调用递归
10             DirectoryToTree(path, node.Nodes);
11
12         }
13
14         //递归加载文件夹目录及目录下文件
15         private void DirectoryToTree(string path, TreeNodeCollection nodes)
16         {
17             foreach (string item in Directory.GetDirectories(path))
18             {
19                 TreeNode node = nodes.Add(Path.GetFileName(item));
20                 DirectoryToTree(item, node.Nodes);
21             }
22             string[] strFiles = Directory.GetFiles(path);
23             foreach (string str in strFiles)
24             {
25                 nodes.Add(Path.GetFileName(str));
26             }
27         }

2.运行结果:

神技do{}while(false)

2018-10-19 00:10 by twtyypmb, 202 阅读, 2 评论, 收藏编辑

  • 神技do{}while(false)

do{}while(false)或者说do{}while(0),本人在linux源码中学得,起初看起来比较奇怪,但在处理连续流程中特别有用,例如ABC三个流程,A执行后判断条件如果为true再执行B,如果未false直接结束流程,B执行完后同样判断条件如果为true再执行C,如果未false直接结束流程,最后执行C,如果不用这个神技,处理起来比较麻烦,下面是一种写法

               if( A() )
                {
                    if( B() )
                    {
                        C();
                    }
                }

可以看出多层嵌套if,如果流程够多if嵌套继续增加,下面是神技写法

           do
            {
                if( !A() )
                {
                    break;
                }

                if( !B() )
                {
                    break;
                }
                C();
            } while( false );

可以看到解决了if嵌套,而且从代码上符合人的逻辑思维

  • try{}catch、升级版do{}while(false)

现在有一个新需求,那就是流程ABC执行后,无论前面的结果都要执行流程D,用do{}while(false)的写法如下

do
{
    if( !A() )
    {
        break;
    }

    if( !B() )
    {
        break;
    }
    C();
} while( false );
D();

其实高级语言的try-catch功能同样可以达到do{}while(false)的效果,用法如下

try
{
    if( !A() )
    {
        throw new Exception();
    }

    if( !B() )
    {
        throw new Exception();
    }
    C();
}
catch( Exception e)
{

}
finally
{
    D();
}

是不是看着跟do{}while(false)结构一致

用以上的方法可以很方便的处理流程,希望对大家有所帮助

还有种方法,在方法体内判断return
还有种方法:bool test = A() ? (B() ? C() : false) : false;

C# -- 使用递归列出文件夹目录及目录下的文件 神技do{}while(false)的更多相关文章

  1. python递归列出目录及其子目录下所有文件

    python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...

  2. Linux fing cd 查找文件/文件夹并进入目录命令

    查找文件|文件夹并进入目录命令:cd $() [root@localhost /]# cd $(dirname "`find / -name 'ifcfg-ens33'`") // ...

  3. 递归法绑定文件夹到导航树&在指定文件夹下新建文件夹

    protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[&q ...

  4. java 弹出选择目录框(选择文件夹),获取选择的文件夹路径

    java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...

  5. Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作

    5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...

  6. 【转帖】Linux文件夹对比并提取的差分文件技巧-rsync的妙用

    Linux文件夹对比并提取的差分文件技巧-rsync的妙用 [日期:2016-02-13] 来源:oschina.net  作者:mengshuai [字体:大 中 小] https://www.li ...

  7. node静态资源服务器的搭建----访问本地文件夹(搭建可访问静态文件的服务器)

    我们的目标是实现一个可访问静态文件的服务器,即可以在浏览器访问文件夹和文件,通过点击来查看文件. 1.先创建一个文件夹anydoor,然后在该文件夹里npm init一个package.json文件, ...

  8. 请问用Inno_Setup打包文件夹时怎么排除其中一个文件?

    请问用Inno_Setup打包文件夹时怎么排除其中一个文件? 该文件夹下有几十个文件,多个文件夹,我要一个个加进去该累死,也容易出问题.不知道能不能实现我要的目的. http://www.jrsoft ...

  9. 手动删除文件夹exe病毒并恢复原来文件夹

    转自手动删除文件夹exe病毒并恢复原来文件夹 经常使用U盘.MP3.MP4等移动硬盘的大家,有时是不是会发现,移动硬盘里有现了exe文件,原来本来有一个文件夹的名字是 音乐 ,但后来发现 音乐 这个文 ...

随机推荐

  1. [NOIp2017提高组]小凯的疑惑

    题目大意: 给你两个数a,b,保证a与b互质,求最大的x满足不能被表示成若干个a与b的和. 思路: 据说是小学奥数题. 考场上先写了个a*b的60分DP,然后打表发现答案就是(a-1)*(b-1)-1 ...

  2. Spring注解@Primary的意思

    @Primary:在众多相同的Bean中,优先使用@Primary注解的Bean. 这个和@Qualifier有点区别,@Qualifier指的是使用哪个Bean进行注入. 参考: http://bl ...

  3. HDU 4638 Group (2013多校4 1007 离线处理+树状数组)

    Group Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  4. 在Visual Studio中开发Matlab mex文件,生成mexw64/mexw32

    csunking贡献,2015-9-22 1712 1.   概述 通过使用C/C++与Matlab混合编程,既可以享受到C代码快速执行的速度,又可以方便的使用Matlab众多的库函数和强大的绘图功能 ...

  5. JavaScript基础入门教程(三)

    说明 前面的两篇博客介绍了js中的基本知识中的变量类型.标识符等.这篇博客主要谈表达式以及运算符. 原始表达式 原始表达式就是表达式中最小的,不能在分割的表达式,一般指变量.常数直接量.关键字(tru ...

  6. 查看iOS Crash logs

    当应用在设备中运行发生崩溃,iOS将记录这些错误日志并且创建了崩溃报告(Crash Report).崩溃报告中包含了iOS的版本.日期.异常类型.堆栈跟踪以及其他信息. ① 在Xcode中查看崩溃报告 ...

  7. 二、spring-boot文件配置

    项目文件结构,新建的Springboot项目的文件结构如下: |-customer(项目名称) | - sec | | - main | | | - java | | | - resources | ...

  8. 二十四种设计模式:单例模式(Singleton Pattern)

    单例模式(Singleton Pattern) 介绍保证一个类仅有一个实例,并提供一个访问它的全局访问点. 示例保证一个类仅有一个实例. Singleton using System; using S ...

  9. 安装pip源

    国内源地址: 豆瓣(douban) http://pypi.douban.com/simple/ 阿里云 http://mirrors.aliyun.com/pypi/simple/ 中国科技大学 h ...

  10. js 获取两位小数的方法

    1. 最笨的办法 function get() { var s = 22.127456 + ""; var str = s.substring(0,s.indexOf(" ...