Действительно ли путь является каталогом? [дубликат]

Этот вопрос уже имеет ответ здесь:

Как я могу зарегистрироваться в C#, если определенный путь является каталогом?

25
задан FunctionR 22 May 2014 в 16:40
поделиться

4 ответа

Попробуйте следующее

bool isDir = Directory.Exists(somePath) 

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

Короче говоря, вторая строка вполне может выйти из строя, потому что каталог не существует.

if ( Directory.Exists(somePath) ) { 
  var files = Directory.GetFiles(somePath); 
}

Недавно я написал в блоге запись на эту тему, которую стоит прочитать, если вы используете такие методы, как Directory.Exists для принятия решения

37
ответ дан 28 November 2019 в 17:55
поделиться

Вы также можете:

FileAttributes attr = File.GetAttributes(@"c:\Path\To\Somewhere");
if((attr & FileAttributes.Directory) == FileAttributes.Directory)
{
    //it's a directory
}
30
ответ дан 28 November 2019 в 17:55
поделиться

Вы также можете проверить атрибуты файла с помощью File.GetAttributes () (of конечно, только если файл / каталог существует). Тип FileAttributes имеет значение с именем Directory , которое указывает, является ли путь каталогом.

7
ответ дан 28 November 2019 в 17:55
поделиться

Если путь существует, вы можете использовать: Directory.Exists , чтобы определить, является ли это файлом или каталогом.

bool existsAndIsDirectory = Directory.Exists(path);

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

6
ответ дан 28 November 2019 в 17:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: