C # Исключение прав доступа к файлам - PullRequest
1 голос
/ 20 июля 2011

Мне было интересно, есть ли способ решить эту проблему с помощью этого кода:

DriveInfo[] dDrives = DriveInfo.GetDrives();
foreach(DriveInfo dDrive in dDrives)
{
    try
    {
        string sDrive = dDrive.ToString();
        string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
        foreach(string sResult in sSearch)
        {
            textBox2.Text = sResult + Environment.NewLine;
        }
    }
    catch
    {
    }
}

Когда он сталкивается с файлом, который недоступен из-за разрешений, он переходит к уловуи конец.Что мне нужно сделать, это найти файл, к которому нет доступа, вернуться к блоку try и продолжить поиск.Любая помощь очень ценится, спасибо!

Ответы [ 2 ]

1 голос
/ 20 июля 2011

РЕДАКТИРОВАТЬ: Удален исходный ответ как неправильный.

См .: UnauthorizedAccessException не может устранить ошибку Directory.GetFiles для некоторых предлагаемых решений вашей проблемы.

1 голос
/ 20 июля 2011

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

Это будет работать, хотя и не рекомендуется:

string sDrive = dDrive.ToString();
try
{
   string[] sSearch = Directory.GetFiles(sDrive, sFile, SearchOption.AllDirectories);
}
catch {}

foreach(string sResult in sSearch)
{
    textBox2.Text = sResult + Environment.NewLine;
}

Где именно вы получаете доступ к файлам?Я вижу только вызов списка имен файлов (Directory.GetFiles) и возвращение списка имен файлов.

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