2010-03-11 1 views
2

var fileOpen = new OpenFileDialog(); var clickedOk = fileOpen.ShowDialog(); если (! ((Bool) щелкнувOk)) возвращение;Понимание булевых значений в DirectoryInfo.Exists

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

Debug.WriteLine(diPath.Exists); 

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

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

Кроме того, по поводу родственного вопроса, скажем, у меня есть directoryinfo для каталога C: \ random \ spot \ здесь почему нет метода для получения этой строки «C: \ random \ spot \ here», кажется, я могу только получить родительское «пятно» или «здесь». Может, я что-то пропустил.

Спасибо,

ответ

6

Там является файл называется path но есть не каталог называется путь.

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

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

1

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^