C# -- 使用递归列出文件夹目录及目录下的文件 神技do{}while(false)
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)的更多相关文章
- python递归列出目录及其子目录下所有文件
python递归列出目录及其子目录下所有文件 一.前言 函数的递归,简单来说,就是函数内部调用自己 先举个小例子,求阶乘 def factorial(n): if n == 0: return 1 e ...
- Linux fing cd 查找文件/文件夹并进入目录命令
查找文件|文件夹并进入目录命令:cd $() [root@localhost /]# cd $(dirname "`find / -name 'ifcfg-ens33'`") // ...
- 递归法绑定文件夹到导航树&在指定文件夹下新建文件夹
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { if (Request.QueryString[&q ...
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
- Linux常用命令,查看树形结构、删除目录(文件夹)、创建文件、删除文件或目录、复制文件或目录(文件夹)、移动、查看文件内容、权限操作
5.查看树结构(tree) 通常情况下系统未安装该命令,需要yum install -y tree安装 直接使⽤tree显示深度太多,⼀般会使⽤ -L选项⼿⼯设定⽬录深度 格式:tree -L n [ ...
- 【转帖】Linux文件夹对比并提取的差分文件技巧-rsync的妙用
Linux文件夹对比并提取的差分文件技巧-rsync的妙用 [日期:2016-02-13] 来源:oschina.net 作者:mengshuai [字体:大 中 小] https://www.li ...
- node静态资源服务器的搭建----访问本地文件夹(搭建可访问静态文件的服务器)
我们的目标是实现一个可访问静态文件的服务器,即可以在浏览器访问文件夹和文件,通过点击来查看文件. 1.先创建一个文件夹anydoor,然后在该文件夹里npm init一个package.json文件, ...
- 请问用Inno_Setup打包文件夹时怎么排除其中一个文件?
请问用Inno_Setup打包文件夹时怎么排除其中一个文件? 该文件夹下有几十个文件,多个文件夹,我要一个个加进去该累死,也容易出问题.不知道能不能实现我要的目的. http://www.jrsoft ...
- 手动删除文件夹exe病毒并恢复原来文件夹
转自手动删除文件夹exe病毒并恢复原来文件夹 经常使用U盘.MP3.MP4等移动硬盘的大家,有时是不是会发现,移动硬盘里有现了exe文件,原来本来有一个文件夹的名字是 音乐 ,但后来发现 音乐 这个文 ...
随机推荐
- Base64序列化和反序列化
序列化: Dictionary<string, string> sPara = GetRequestPost(ref parameterStr); string serializeStri ...
- android中自定义checkbox的图片和大小
其实很简单,分三步: 1.在drawable中创建文件checkbox_selector.xml: <?xml version="1.0" encoding="ut ...
- 8VC Venture Cup 2016 - Final Round (Div. 2 Edition) C. XOR Equation 数学
C. XOR Equation 题目连接: http://www.codeforces.com/contest/635/problem/C Description Two positive integ ...
- TCP连接 断开
参考:http://blog.csdn.net/cyberhero/article/details/5827181 1.建立连接协议 (三次握手) (1)客户端发送一个带SYN标志的TCP ...
- 通过简单的SSH隧道实现穿越上网(转)
说明:很惊讶,原来强大的SSH也能实现穿越上网,且配置真的很简单,比OpenVPN简单很多.当然,除了代理简单上网之外,其余功能就没OpenVPN那么的强大,对于用哪个就需要自己去衡量.SSH建立的隧 ...
- Chrome下flash无法显示多个的问题。
$(document).ready(function(){ if(window.navigator.appVersion.match(/Chrome/)) { jQuery('object').eac ...
- jdo pom
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20 ...
- Windows系统下将目录挂载为一个磁盘并分配盘符
Windows系统下subst可以临时将目录分配一个盘符. 将路径与驱动器号关联. SUBST [drive1: [drive2:]path]SUBST drive1: /D drive1: 指定要分 ...
- 深入理解JavaScript模拟私有成员
一般的面向对象语言C++或JAVA,对象都是有私有成员的.js中没有类的改变,同样也没有对象的私有成员这个概念.但是可以通过某些特殊写法,模拟出私有成员. 1.特权模式: (1)在构造函数内部声明的变 ...
- Java自定义注解Annotation详解
注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去 ...