Понимание логического значения в DirectoryInfo.Exists - PullRequest
2 голосов
/ 11 марта 2010

var fileOpen = new OpenFileDialog (); var clickedOk = fileOpen.ShowDialog (); if (! ((bool) clickedOk)) return;

var path = fileOpen.FileName;
var diPath = new DirectoryInfo(path);
var fiPath = new FileInfo(path);

Debug.WriteLine(diPath.Exists);

Мне просто интересно, почему diPath.Exists в этом случае имеет значение false? Поскольку пользователь выбрал файл, каталог должен существовать !? и это делает ...

Я использовал обходной путь, используя Directory.Exists(fiPath.DirectoryName), но кажется странным, что вышеперечисленное не работает, и немного раздражает необходимость использования этого другого var просто для проверки того, что, как я знаю, существует, и должно просто использовать diPath. В чем дело?

Также по смежному вопросу, скажем, у меня есть каталог информации для каталога C: \ random \ spot \ здесь, почему нет способа получить эту строку "C: \ random \ spot \ here", кажется, я могу получить только Родительское «пятно» или Имя «здесь». Может быть, я что-то пропустил.

Спасибо

Ответы [ 2 ]

6 голосов
/ 11 марта 2010

Существует файл с именем path, но нет каталога , называемого путем.

var diPath = new DirectoryInfo(Path.GetDirectoryName(path));

это, вероятно, то, что вы хотите.

1 голос
/ 11 марта 2010

Вы включаете имя файла в «путь», и в качестве такового путь будет конечным узлом (т.е. файлом), а не каталогом (узлом ветви).Обработка файлов и путей в Windows довольно буквальна для подобных вещей.

Как уже упоминалось ранее, DirectoryInfo или Path.GetDirectoryName () - это, вероятно, то, что вы хотите использовать при работе с путями.

...