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. 【贪心+优先队列】POJ3190-Stall Reservations

    [题目大意] 给出每个奶牛挤奶的时间,同一时间同一畜栏内不会有两头奶牛挤奶,问至少要多少个畜栏. [思路] 将奶牛按照挤奶开始的时间进行升序排序,再用一个小顶堆维护每一个畜栏当前的挤奶结束时间.对于当 ...

  2. 1.3 (JavaScript学习笔记)JavaScript对象

    在JavaScript中所有事物都是对象,字符串.数值.数组.函数...等, JavaScript还允许自定义对象.这些在1.1中有所介绍. 一.遍历对象属性 <!DOCTYPE html> ...

  3. Problem A: 深入浅出学算法022-汉诺塔问题II

    #include<stdio.h> void hanio(int n,char a,char b,char c) { ) printf("%c->%c\n",a, ...

  4. [转]No configuration found for the specified action解决办法

    使用Struts2,配置一切正常,使用常用tag也正常,但是在使用<s:form>标记时,发现控制台总是输出警告信息, 警告信息内容如下: 警告: ...... <div> h ...

  5. Web安全开发指南--数据验证

    1.数据验证 4.1.输入数据验证安全规则 1 数据验证必须放在服务器端进行. 2 至少对输入数据的数据类型.数据范围和数据长度进行验证. 3 所有来自不可信数据源(比如网络.用户命令.数据库和文件系 ...

  6. JCA 了解

    JCA (J2EE 连接器架构,Java Connector Architecture)是对 J2EE标准集的重要补充.因为它注重的是将 Java程序连接到非Java程序和软件包中间件的开发.连接器特 ...

  7. 编译 arm 版的qt

    因为项目需要,我们需要在开发板上使用QT开发平台,因此需要编译一个arm版的QT. 在网上找了一些资料,费了几天时间,终于成功了. 第一步,准备源码 先下载QT 源码,在http://qt-proje ...

  8. gdc skin

    https://www.gdcvault.com/play/1024410/Achieving-High-Quality-Low-Cost 这篇是教美术怎么用做地形那种方法 复用贴图 做skin的 做 ...

  9. http://m.blog.csdn.net/article/details?id=2630620

    http://m.blog.csdn.net/article/details?id=2630620

  10. Linux环境Nginx安装与调试以及PHP安装

    linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5.28 1.编译安装Nginx 官网:http://wiki.nginx.org/Instal ...