c# 刪除某個資料夾下所有空目錄,解決因刪除空目錄後上一組成空目錄沒有刪除的情況

米色米香發表於2019-06-21

網上有相關方法,但是有一個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);
                        }
                    }
                }
            }

        }

  主要是判斷所有資料夾及子資料夾是不是有檔案,如果沒有就直接刪除包括子目錄,迴圈時增加判斷是否存在對應的目錄,可以避免因刪除目錄及子目錄後,前面取的資料夾列表對應元素目錄實際不存了報錯。

相關文章