理解DirectoryInfo.Exists上的布尔值

时间:2010-03-11 00:47:44

标签: c# boolean fileinfo directoryinfo

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在这种情况下是假的?由于用户选择了一个文件,该目录必须存在!?它确实......

我通过使用Directory.Exists(fiPath.DirectoryName)使用了一个解决方法,但是上面的工作并不起作用似乎很奇怪,并且需要其他var来检查我所知道的存在的东西并且应该只是能够使用diPath。这是怎么回事?

另外在相关问题上,我说目录C:\ random \ spot \这里有一个directoryinfo为什么没有方法获取该字符串“C:\ random \ spot \ here”似乎我只能得到父母“点”或姓名“这里”。也许我错过了什么。

谢谢,

2 个答案:

答案 0 :(得分:6)

有一个名为path文件,但没有名为目录的路径。

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

可能就是你想要的。

答案 1 :(得分:1)

您在“路径”中包含文件名,因此路径将是叶节点(即文件)而不是目录(分支节点)。 Windows文件/路径处理是关于这些事情的文字。

如前所述,DirectoryInfo或Path.GetDirectoryName()可能是您在使用路径时要使用的内容。