将包含驱动器号的相对路径转换为.NET文件函数的绝对路径

如何将驱动器相对路径(如D:test.xml)转换为XDocument.Load()等函数将接受的绝对路径。 例如,D驱动器可以将D:\ data作为其当前工作目录,因此D:test.xml将表示D:\ data \ test.xml。 我已经尝试过像D:。\ test.xml这样的混合。

这是我得到的类似D的错误:test.xml:无效的URI:Dos路径必须是root,例如’c:\’

您可以使用GetFullPath 。 例如:

 // should return "D:\data\test.xml" if the current working dir is "D:\data" string absolutePath = Path.GetFullPath("D:test.xml"); 

您应该只使用“test.xml”作为相对路径,如果当前文件夹是“D:\ data”,则完整路径将解析为“D:\ Data \ test.xml”。 这也在Load()方法的MSDN示例中说明: http : //msdn.microsoft.com/en-us/library/bb343181.aspx

请注意,“driveLetter:fileName”不是.Net中的相对路径。 (请阅读更新)

您可以使用Path.GetFullPath()将相对路径转换为完整路径,但您不必执行该操作XDocument.Load(),因为它也将接受相对路径。

更新 LukeH,谢谢你指出这一点! Path.GetFullPath()接受“driveLetter:fileName”,并将其计算为指定驱动器当前目录的相对路径,如此处所指定。

驱动级别的当前目录的概念inheritance自DOS的旧时代。 不一定是我将构建现代应用程序的function。

Path.GetFullPath可以工作。 看到这里的文档