2015-10-12 3 views
-3

Я создаю программу для удаления некоторых файлов, которые у меня есть на моем ПК. Но когда я пытаюсь это сделать, я получаю сообщение об ошибке:Удаление файлов с помощью C#

Если вы пытаетесь получить доступ к файлу, убедитесь, что он не является ReadOnly.

Удостоверьтесь, что у вас есть достаточные привилегии для доступа к этому ресурсу.

Получить общую информацию об этом исключении.

foreach (string subFich in SubFicheiros) 
    { 
     listBox.Items.Add("- Deleting File: " + subFich.Substring(Pasta.Length + 1, subFich.Length - Pasta.Length - 1)); 
     ficheirosEncontrador++; 
    } 
    try 
    { 
     Directory.Delete(Pasta, true); 
    } 
    catch (IOException) 
    { 
     Thread.Sleep(0); 
    //The Message Error appears here on this code right below: 
      Directory.Delete(Pasta, true); 

    } 
    catch (UnauthorizedAccessException) 
    { 
     Directory.Delete(Pasta, true); 
    } 
} 

Я хотел бы получить некоторую помощь в этом. Как я могу спросить пользователя, чтобы позволить мне получить привилегии для его удаления.

+0

Вы повторяете команду 'Directory.Delete()' в блоках 'try' и' catch'. Он должен находиться только в блоке 'try'. Привилегии устанавливаются вне вашей программы администратором на ПК. – dave

ответ

1

Хорошо, что делает ваш код: вы удаляете каталог, и если он дает какое-либо исключение, вы снова пытаетесь сделать тот же шаг, на котором у вас есть исключение.

Прежде всего ошибка происходит потому, что файлы устанавливаются только для чтения или потому что вы не имеете достаточно прав для удаления каталога (или, возможно, какой-то процесс использует файлы, которые вы пытаетесь удалить)

foreach (string subFich in SubFicheiros) 
{ 
    listBox.Items.Add("- Deleting File: " + subFich.Substring(Pasta.Length + 1, subFich.Length - Pasta.Length - 1)); 
    ficheirosEncontrador++; 
} 
try 
{ 
var di = new DirectoryInfo(Pasta); 
di.Attributes &= ~FileAttributes.ReadOnly; 
Directory.Delete(Pasta, true); 
} 
catch (Exception EE) 
{ 

MessageBox.Show("Error: "+ EE.toString()); 
} 

если этот код по-прежнему не работает, проверьте, есть ли у вас права администратора для удаления этой папки.

0

Похоже, что ваш файл доступен только для чтения, или вы не имеете права удалять файл, который вы хотите, на основе имени пользователя.

Смежные вопросы