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