Удаление файлов - пропустить файлы в использовании - PullRequest
0 голосов
/ 18 ноября 2018

Я пытаюсь удалить файлы в каталоге, но получаю ошибки при попытке удалить файлы, которые используются в данный момент.Есть ли способ пропустить файлы, которые используются в данный момент, и удалить остальные?Спасибо.

foreach(var file in Directory.GetFiles(tempPath))
{
    File.Delete(file);
}

Это код, который у меня есть, но я не знаю, как это сделать.

Ответы [ 3 ]

0 голосов
/ 18 ноября 2018

Я думаю, что более простой способ - окружить ваш код блоком try-catch.Как то так:

foreach(var file in Directory.GetFiles(tempPath))
{
    try 
    {
        File.Delete(file);
    } 
    catch (Exception) 
    {
        //Decide what you want to do here, you can either 
        //ask user to retry if the file is in use
        //Or ignore the failure and continue, or...
    }          
}
0 голосов
/ 18 ноября 2018

Вы можете проверить, попробуйте поймать

private bool IsLocked(string filePath)
    {

        FileInfo f = new FileInfo(filePath);
        FileStream stream = null;

        try
        {
            stream = f.Open(FileMode.Open, FileAccess.Read, FileShare.None);
        }
        catch (IOException ex)
        {
            return true;
        }
        finally
        {
            if (stream != null)
                stream.Close();
        }
        return false;
    }


    public void RemoveFile(string folderPath)
    {
        foreach (var file in Directory.GetFiles(folderPath))
        {
            if (!IsLocked(file))
            {
                File.Delete(file);
            }
        }
    }
0 голосов
/ 18 ноября 2018

Обернуть файл. Удалить в блоке try {} catch

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