2016-09-20 44 views
1

C:是我的PC的启动驱动器。在根驱动器上调用GetParent()

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

案例1:

dirInfo不是null,dirInfo.FullPath设置为 “C:\ Program Files文件(x86)的\微软的Visual Studio 14.0 \ Common7” 我的机器上

案例2:

dirInfo是空

Directory.GetParent Method

空如果路径是根目录

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

+0

因为它根本不是文件夹?虽然我希望这个 –

+0

有个例外,但自从MS-DOS的日子以来,'cd C:'意味着将目录更改为C:驱动器上的当前目录。 –

+0

对于DOS,也许。对于期望路径或卷的命令,这是真的。 'GetParent'虽然需要一个路径并返回一个绝对路径。 'C:'不是一个有效的路径根路径,所以它被当作相对路径,就像'Directory.GetParent(“c”)''或'Directory.GetParent(“a”)'一样。对于所有这些情况,父目录是当前目录 –

回答

2

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

此方法返回的字符串由最后一个DirectorySeparatorChar或AltDirectorySeparatorChar之前的路径中的所有字符组成。

这意味着如果您通过c\,该方法将返回C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\c

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

相关问题