C #: Побочные эффекты с Directory.GetFiles в выражении foreach и удалении файлов? - PullRequest
1 голос
/ 27 ноября 2008

У меня следующий цикл foreach:

using System.IO;
//...   
if (Directory.Exists(path))
{
    foreach(string strFile in Directory.GetFiles(path, "*.txt"))
    {
        // do something, possibly delete the file named strFile
    }
}

Могут ли быть побочные эффекты при удалении файлов в каталоге, который в данный момент используется для цикла foreach?

Ответы [ 2 ]

9 голосов
/ 27 ноября 2008

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

2 голосов
/ 27 ноября 2008

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

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