Убедитесь, что какой-либо каталог существует внутри данного

Мое приложение - Windows, С# 3.0. Я хочу убедиться, что указанный каталог не содержит подкаталогов. Наивный код вроде

if (Directory.GetDirectories(path).Length != 0)

будет работать очень медленно в каталогах, которые содержат, например. 10000 подкаталогов, потому что он будет строить список подкаталогов, а мне и 1 каталога уже достаточно.

Есть ли способ в .NET быстро определить 1 подкаталог?


person Alex    schedule 29.02.2012    source источник


Ответы (2)


if (Directory.EnumerateDirectories().Any())

EnumerateDirectories будет возвращать каталоги только по мере перечисления возвращаемой последовательности (отложенное выполнение).

person SLaks    schedule 29.02.2012
comment
Ой, это метод 4.0. Мне это не подходит к сожалению. - person Alex; 29.02.2012
comment
Поиск в Интернете; в более ранних версиях могут быть примеры кода для выполнения подобных действий. Вам нужно будет вызвать метод FindFirstFile() API. - person SLaks; 29.02.2012
comment
Я вижу код 3.0 GetDirectories — они тоже используют Pinvoke, так что, возможно, я смогу взять оттуда код. - person Alex; 29.02.2012

Используйте перегрузку функции, это будет искать только каталоги в текущем каталоге, а не все дерево:

if (Directory.GetDirectories(path, "*.*", SearchOption.TopDirectoryOnly).Length != 0)
person Walk    schedule 29.02.2012
comment
Я говорю о каталоге с прямыми 10000 детей. - person Alex; 29.02.2012