在根驱动器上调用GetParent()

时间:2016-09-20 10:07:25

标签: c#

C:是我的电脑启动驱动器。

DirectoryInfo dirInfo;
dirInfo = System.IO.Directory.GetParent(@"C:"); // Case 1
dirInfo = System.IO.Directory.GetParent(@"C:\"); // Case 2

案例1:

dirInfo不为空,dirInfo.FullPath在我的机器上设置为“C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7”

案例2:

dirInfo为空

来自Directory.GetParent Method

  

如果path是根目录,则返回null

“C:”不被视为root。为什么不呢?

1 个答案:

答案 0 :(得分:2)

Directory.GetParent只是一个字符串操作函数,它接受绝对或相对本地路径或UNC并返回绝对字符串。如果路径是相对路径,则使用当前工作目录。正如文档所述:

  

此方法返回的字符串包含路径中的所有字符,但不包括最后一个DirectorySeparatorChar或AltDirectorySeparatorChar。

这意味着如果您通过Application.EnableVisualStyles(),该方法将返回c\

C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\c是一个卷号,而不是一个路径。由于C:未被识别为绝对路径或UNC路径,因此将其视为相对路径,就像C:ca一样。在这两种情况下,返回值都将是当前工作目录。使用Visual Studio进行调试时,工作目录是Visual Studio的目录。