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


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

直接看代码

 

 

        // 删除掉空文件夹,所有没有子“文件系统”的都将被删除
        private void KillEmptyFolder(string sPath)
        {
            if (Directory.Exists(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);
                            //如果文件个数为0则删除目录及子目录
                            if (nFiles.Count() == 0)
                            {
                                //Directory.Delete(item, true);
                                //删除的文件夹发送到回收站
                                Microsoft.VisualBasic.FileIO.FileSystem.DeleteDirectory(item, Microsoft.VisualBasic.FileIO.UIOption.AllDialogs, Microsoft.VisualBasic.FileIO.RecycleOption.SendToRecycleBin);
                            }
                        }
                    }
                }
            }
        }

  

 

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM