Подтвердить что ты не робот

Является ли путь каталогом?

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

4b9b3361

Ответ 1

Попробуйте выполнить

bool isDir = Directory.Exists(somePath) 

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

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

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

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

Ответ 2

Вы также можете сделать:

FileAttributes attr = File.GetAttributes(@"c:\Path\To\Somewhere");
if((attr & FileAttributes.Directory) == FileAttributes.Directory)
{
    //it a directory
}

Ответ 3

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

Ответ 4

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

bool existsAndIsDirectory = Directory.Exists(path);

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