Из моей программы я хочу удалить папки с или без файлов/папок в них.Как удалить папки с файлами в нем?
Код:
static void Main(string[] args)
{
List<string> foldersToDelete = new List<string>();
foreach(var f in System.IO.Directory.GetDirectories(@"C:\Users\Public\MySpecialTempFolder"))
{
var dir = new DirectoryInfo(f);
dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
long size = GetDirectorySize(f);
// delete folders less then 1 mb
if (size < 1000000)
foldersToDelete.Add(f);
}
foreach (var s in foldersToDelete)
System.IO.Directory.Delete(s, true);
}
private static long GetDirectorySize(string folderPath)
{
DirectoryInfo di = new DirectoryInfo(folderPath);
return di.EnumerateFiles("*.*", SearchOption.AllDirectories).Sum(fi => fi.Length);
}
Однако ... когда я запускаю это я получаю Access denied
. Что не так, я могу сделать это вручную, щелкнув правой кнопкой мыши на папку и удалите его прямо там и тогда
бежит VS как администратор? –
Возможный дубликат [File.Delete Доступ к пути запрещен] (http://stackoverflow.com/questions/15260146/file-delete-access-to-the-path-is-denied) – Nasreddine
Вы должны опубликовать исключение, которое вы получаете вместе с трассировкой стека, потому что если вы получаете «UnauthorizedAccessException», то в соответствии с [документацией] (https://msdn.microsoft.com/en-us/library/fxeahc5f%28v=vs. 110% 29.aspx) это означает, что «У вызывающего абонента нет требуемого разрешения». Кроме этого ваш код кажется правильным. – Nasreddine