C#递归删除文件夹中的全部内容

      前言:这几天做了一个项目,用npoi导出项目的内容,而每次导出都要清空服务器上原有的内容,然后就用微软自带的方法 Directory.Delete("path", true);,但是这个方法只能删除空目录,所以总抛异常,无奈之下,只好先删掉文件中的全部文件再调用这个方法,还是报错“ 目录不是空的”,好郁闷,文件夹中有空文件夹都不能删除,关键是这个异常一会抛,一会不抛,让人很头疼。干脆自己写了一个递归删除的算法。代码如下:
 C# Code 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
     /// 删除目录下的所有文件包括子文件夹及其中的文件
     private   string  DelAll( string  path)
    {
        
try
        {
            
string [] child = Directory.GetDirectories(path);
            
if  (child.Length >  0 )
            {
                
//删除该目录下的所有文件夹
                 for  ( int  i =  0 ; i < child.Length; i++)
                {
                    
//如果该目录下还有目录,则再往下寻找
                     if  (Directory.GetDirectories(child[i]).Length >  0 )
                    {
                        DelAll(child[i]);
                        Directory.Delete(child[i], 
true ); //重要!!!删除完子目录以后返回来要删除父目录
                    }
                    
else //该目录下已经没有目录了,删除所有文件,然后删除该目录。
                    {
                        
string [] files = Directory.GetFiles(child[i]);
                        
for  ( int  j =  0 ; j < files.Length; j++)
                        {
                            File.Delete(files[j]);
                        }
                        Directory.Delete(child[i],
true );
                    }
                    
                }
            }
            
//删除该目录下的所有文件
             string [] file = Directory.GetFiles(path);
            
for  ( int  j =  0 ; j < file.Length; j++)
            {
                File.Delete(file[j]);
            }
            
return   "true" ;
        }
        
catch (Exception ex)
        {
            
return   "false:"  + ex.Message;
        }
    }
后记:也不知道是哪位计算机天才想出来递归这种调用自己本身的算法,太牛了,真的。简直就是疯子,《天才在左疯子在右》。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AIGIS.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值