C# 彻底删除文件夹


一、问题

当文件夹内部有文件存在时,我们直接删除文件夹,会报错“目录不为空”。若我们要删除文件夹及内部包含文件,可以采用递归的方式去删除。即遍历文件夹下的文件和文件夹,如果是文件,则直接删除,如果是文件夹则继续使用递归遍历,直到文件夹内部不包含任何内容后,退出递归。

二、代码

   public static void ThoroughDeleteDirectory(string directoryPath)
        {
            foreach (var path in Directory.GetFileSystemEntries(directoryPath))
            {
                if (File.Exists(path))
                {
                    // 删除文件夹
                    File.Delete(path);
                }
                else
                {
                    // 递归删除文件夹
                    ThoroughDeleteDirectory(path);
                }
            }

            // 删除空文件夹
            Directory.Delete(directoryPath);
        }