C#删除内含文件和文件夹的目录

文章作者: GoodBoyboy
文章链接: https://blog.goodboyboy.top/255.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GoodBoyboy 's Blog|惬意小屋-点滴记忆!

# 前言
学 C# 的 File 和 Directory 时候突然想到这个问题,因为普通的 DELETE 方法只能删除空文件夹,而删除带有文件和文件夹的目录就会报错

所以心血来潮写下这篇笔记

# 代码
下面是 cs 一览

PLAINTEXT
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CSharpHello
{
    internal class 删除目录大法
    {
        public 删除目录大法(string dir)
        {      
            Console.WriteLine("-------------删除目录大法cs666测试开始-----------------");
            del(dir);
        }
        private void del(string dir)
        {
            DirectoryInfo d = new DirectoryInfo(dir);      
            DirectoryInfo[] directorys = d.GetDirectories();
            for(int i = 0; directorys.Length > i; i++)
            {
                del(d + "/" + directorys[i].Name);
            }      
            FileInfo[] files = d.GetFiles("*");
            foreach(FileInfo file in files)
            {        
                File.Delete(file.FullName);
            }      
            Directory.Delete(d.FullName, true);
        }
    }
}
下面是核心代码

PLAINTEXT
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
private void del(string dir)
{
    DirectoryInfo d = new DirectoryInfo(dir);      
    DirectoryInfo[] directorys = d.GetDirectories();
    for(int i = 0; directorys.Length > i; i++)
    {
        del(d + "/" + directorys[i].Name);
    }      
    FileInfo[] files = d.GetFiles("*");
    foreach(FileInfo file in files)
    {        
        File.Delete(file.FullName);
    }      
    Directory.Delete(d.FullName, true);
}

就是简单的递归

# 原理
先获取当前文件夹内的信息,判断是否有文件夹,如果有的话就进入该文件夹并重复上面操作

直到进入一个没有文件夹的目录,然后使用 foreach 遍历该文件夹下所有文件并删除,之后删除该文件夹

完成操作后跳出该级递归返回到上一层对上一层第二个文件夹做出上述相同的操作直到这层目录没有文件夹,删除该层所有文件

删除该层目录,返回上一层…

# 后记
应该没啥 bug 吧

文章作者: GoodBoyboy
文章链接: https://blog.goodboyboy.top/255.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 GoodBoyboy 's Blog|惬意小屋-点滴记忆!


作者: GoodBoyboy
链接: https://blog.goodboyboy.top/255.html
来源: GoodBoyboy 's Blog|惬意小屋-点滴记忆
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值