Когда строка "D:\test\..." передается методу System.IO.Directory.Exists
, он возвращает True
на моей машине. Я проверил следующий код;
public static void Main(string[] args)
{
if (Directory.Exists("D:\\test\\..."))
Console.WriteLine("Directory exist."); //Control gets here
else
Console.WriteLine("Does not exist.");
}
Это происходит, даже если каталог с именем "..." (тройные точки) не существует в указанном месте.
Дальнейшее исследование этого показывает, что каким-то образом внутри он проверяет только «D:», полностью игнорируя последнюю часть строки. Поскольку родительский каталог существует, он возвращает значение true.
Я хочу знать, есть ли способ проверить, не обрезая конечные точки?
Существуют ли такие сценарии, когда результат метода Directory.Exists
может отличаться от ожидаемого?
Обновление: если я введу ту же строку "D:\test\..." в адресную строку проводника Windows и нажму Enter, он сможет определить, что не может найти такой каталог . Есть ли способ получить подобное поведение?
Примечание. Я знаю, что каталог с таким именем не может существовать, но я получаю входную строку от пользователя, поэтому ввод для этого метода может быть любым.
...
в любом случае будет недопустимым каталогом, вы не можете создать такой каталог. - person Tim Schmelter   schedule 29.08.2018input string from user, so input to this method could be anything
... ладно, но иногда даже пользователям нужно включить мозг ;) - person nilsK   schedule 29.08.2018Note: I know that directory with such name can not exist but I am getting input string from user, so input to this method could be anything.
‹= Не доверяйте пользовательскому вводу! Никогда! Всегда проверяйте и очищайте его, прежде чем что-либо с ним делать. - person Igor   schedule 29.08.2018I want similar behavior.
‹= Так работает API. Если вы хотите что-то еще, вам нужно написать это самостоятельно, найти другую библиотеку или отправить запрос на билет в Microsoft, чтобы изменить поведение (хотя не задерживайте дыхание на этом). Или вы можете сделать то, что я предложил выше, и выбрать один из этих двух довольно простых в реализации элементов. - person Igor   schedule 29.08.2018CD Test\...
работает просто отлично. - person Igor   schedule 29.08.2018