Ошибка «Каталог не пуст» при попытке программно удалить папку

В моем приложении я построил систему, где пользователи могут создавать картинные галереи. Фотографии хранятся в папках в формате category_name / gallery_name / {pictures} на диске. Каждая загруженная фотография хранится в соответствующей структуре каталогов, как указано выше.

Хотя при попытке удалить категорию, а также при удалении из базы данных, я хочу также удалить соответствующие папки из системы. Когда я впервые получил сообщение об ошибке «Каталог не пустой» яискал и нашел это решение:

public static void DeleteDirectory(string target_dir)
    {
        string[] files = Directory.GetFiles(target_dir);
        string[] dirs = Directory.GetDirectories(target_dir);

        foreach (string file in files)
        {
            File.SetAttributes(file, FileAttributes.Normal);
            File.Delete(file);
        }

        foreach (string dir in dirs)
        {
            DeleteDirectory(dir);
        }

        Directory.Delete(target_dir, false);
    }

С помощью этого решения фотографии в & quot; gallery_name & quot; папка удаляется просто отлично, затем сама папка gallery_name удаляется отлично .. так что теперь у нас остается пустая папка category_name. Тогда последний бит кода в вышеуказанной подпрограмме (Directory.Delete(target_dir, false);) вызывается для удаления папки category_name. Ошибка возникает снова ..

Кто-нибудь знает решение этой проблемы?

Directory.Delete(target_dir, true); did not work, that is why I tried an alternative. I have full control over the parent folder and the category_name and gallery_name folders are also created programmatically without any problem. As I mentioned, the sub directories (gallery_name folders) and their contents (photos) are deleted with this code just fine. It is the category_name folder which causes the error, even though after this code, it is just an empty folder.

Я получаю сообщение об исключении:

System.IO.IOException was unhandled by user code
  HResult=-2147024751
  Message=The directory is not empty.

  Source=mscorlib
  StackTrace:
       at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
       at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
       at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
       at System.IO.Directory.Delete(String path)
       at MyApp.PhotoGallery.Categories.deleteCategory(Int32 cID, String categoryname) in d:\Documents\My Dropbox\web projects\MyAppFolder\App_Code\BLL\PhotoGallery.vb:line 291
       at _admhades_PhotoGallery.deleteCategory(Int32 categoryID, String categoryname) in d:\Documents\My Dropbox\web projects\HavadisPre\_admhades\PhotoGallery.aspx.vb:line 71

Ответы на вопрос(5)

Ваш ответ на вопрос