Этот вопрос уже имеет ответ здесь:
Как я могу зарегистрироваться в C#, если определенный путь является каталогом?
Попробуйте следующее
bool isDir = Directory.Exists(somePath)
Обратите внимание, что это не совсем точно говорит вам, существует ли каталог. Он сообщает вам, что в какой-то момент недавнего прошлого существовал каталог, к которому текущий процесс имел некоторый доступ. К тому времени, когда вы попытаетесь получить доступ к каталогу, он уже может быть удален или изменен каким-либо образом, чтобы предотвратить доступ вашего процесса к нему.
Короче говоря, вторая строка вполне может выйти из строя, потому что каталог не существует.
if ( Directory.Exists(somePath) ) {
var files = Directory.GetFiles(somePath);
}
Недавно я написал в блоге запись на эту тему, которую стоит прочитать, если вы используете такие методы, как Directory.Exists для принятия решения
Вы также можете:
FileAttributes attr = File.GetAttributes(@"c:\Path\To\Somewhere");
if((attr & FileAttributes.Directory) == FileAttributes.Directory)
{
//it's a directory
}
Вы также можете проверить атрибуты файла с помощью File.GetAttributes ()
(of конечно, только если файл / каталог существует). Тип FileAttributes
имеет значение с именем Directory
, которое указывает, является ли путь каталогом.
Если путь существует, вы можете использовать: Directory.Exists
, чтобы определить, является ли это файлом или каталогом.
bool existsAndIsDirectory = Directory.Exists(path);
Если путь не существует, то там невозможно определить, является ли путь файлом или каталогом, потому что это может быть и то, и другое.