Проверьте, является ли строка действительным каталогом Windows (папка) путь

Я пытаюсь определить, допустима ли строка, введенная пользователем, для представления пути к папке. Допустимым я имею в виду отформатированный правильно.

В моем приложении папка представляет место назначения установки. При условии, что путь к папке допустим, я хочу определить, существует ли папка, и создайте его, если это не делает.

Я в настоящее время использую IO.Directory.Exists( String path ). Я нахожу, что это хорошо работает кроме тех случаев, когда пользователь не форматирует строку правильно. Когда это произойдет, этот метод возвратит false, который указывает, что папка не существует. Но это - проблема, потому что я не смогу создать папку впоследствии.

От моего поиска с помощью Google я нашел, что предложение использовало регулярное выражение, чтобы проверить, является ли формат соответствующим. У меня нет опыта с регулярными выражениями, и задаюсь вопросом, является ли это жизнеспособным подходом. Вот то, что я нашел:

Regex r = new Regex( @"^(([a-zA-Z]\:)|(\\))(\\{1}|((\\{1})[^\\]([^/:*?<>""|]*))+)$" );
return r.IsMatch( path );

Был бы тест регулярного выражения в сочетании с Directory.Exists(), дайте мне достаточно хороший метод, чтобы проверить, допустим ли путь и существует ли он? Я знаю, что это будет меняться в зависимости от ОС и других факторов, но программа предназначена для пользователей Windows только.

76
задан DavidRR 8 December 2016 в 20:58
поделиться

1 ответ

Вызов Path.GetFullPath ; он вызовет исключения, если путь недействителен.

Чтобы запретить относительные пути (например, Word ), вызовите Path.IsPathRooted .

106
ответ дан 24 November 2019 в 11:15
поделиться
Другие вопросы по тегам:

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