c# 删除某个文件夹下所有空目录,解决因删除空目录后上一组成空目录没有删除的情况

Posted vikimono

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# 删除某个文件夹下所有空目录,解决因删除空目录后上一组成空目录没有删除的情况相关的知识,希望对你有一定的参考价值。

网上有相关方法,但是有一个BUG,就是目录下的子目录为空,只会删除目录,不会删除父目录,应该是判断时还有子目录存在,不为空。以下是我类似方法改进后,去除这个BUG。

直接看代码

        private void button1_Click(object sender, EventArgs e)
        
            string dir = @"D:\TestTemp";
            KillEmptyFolder(dir);

        

        private void KillEmptyFolder(string sPath)
        
            DirectoryInfo info = new DirectoryInfo(sPath);
            
            foreach (string item in Directory.GetFileSystemEntries(sPath, "*", SearchOption.AllDirectories))
            
                if (!File.Exists(item))
                
                    if (Directory.Exists(item))
                    
                        string[] nFiles = Directory.GetFiles(item, "*.*", SearchOption.AllDirectories);
                        if (nFiles.Count() == 0)
                        
                            Directory.Delete(item, true);
                        
                    
                
            

        

  主要是判断所有文件夹及子文件夹是不是有文件,如果没有就直接删除包括子目录,循环时增加判断是否存在对应的目录,可以避免因删除目录及子目录后,前面取的文件夹列表对应元素目录实际不存了报错。

以上是关于c# 删除某个文件夹下所有空目录,解决因删除空目录后上一组成空目录没有删除的情况的主要内容,如果未能解决你的问题,请参考以下文章

JAVA删除某个目录及目录下的所有子目录和文件

python删除一个目录下某个类型的文件,以及删除目录下子目录的所有文件

Java中删除文件删除目录及目录下所有文件

Java递归删除目录及目录下的文件

Java递归删除目录及目录下的文件

C# 删除指定目录下全部文件