Directory.Delete (путь, истина) всегда выдает ошибку - ASP.NET 3.5 MVC - PullRequest
0 голосов
/ 10 февраля 2010

Я использую MVC ASP.NET 3.5 и пытаюсь удалить папку со всеми файлами, используя стандартный метод .NET, который всегда использовал в .NET 2.0.

Я нашел это , но первый ответ, похоже, не работает.
Я попробовал это

try
{
    Directory.Delete(path, true);
}
catch (IOException)
{
    Thread.Sleep(0);
    Directory.Delete(path, true);
}

и работает, но я не могу понять, почему.
Есть предложения?

Редактировать: У меня есть разрешения, потому что все файлы и подпапки были удалены. Но у меня есть и исключение "Каталог не пуст" с путем. Если я использую предоставленный код, работает без каких-либо исключений.

Ответы [ 3 ]

1 голос
/ 10 февраля 2010

Даже при использовании проводника это сообщение иногда отображается (по крайней мере, для меня). Как насчет удаления файлов, а затем удалить папку?

string[] files = Directory.GetFiles(some_path, "", SearchOption.AllDirectories);
foreach (string pathFile in files)
{
    File.Delete(pathFile);
}
Directory.Delete(some_path);

вы можете использовать SearchOptions, если у вас есть субфоллеры, но если нет, тогда просто используйте

string[] files = Directory.GetFiles(some_path);

Надеюсь, это поможет.

EDIT

Эта проблема возникает по многим причинам (например, MS), но я думаю, что основными являются: потому что папка повреждена или какой-то процесс блокирует ее и предотвращает удаление.

Не элегантным решением может быть: сначала удалите файлы, затем подпапки, а на последнем шаге удалите основную папку.

1 голос
/ 22 мая 2012

Попробуйте использовать это, у меня получилось

  File.SetAttributes(DownloaddirPath & "\" & directoryName, FileAttributes.Normal)
  Directory.Delete(DownloaddirPath & "\" & directoryName, True)
0 голосов
/ 10 февраля 2010

У вас достаточно прав для удаления папки? Также, как говорит другой вопрос, убедитесь, что каталог пуст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...