如何将相对path转换为Windows应用程序中的绝对path?

如何将相对path转换为Windows应用程序中的绝对path?

我知道我们可以在ASP.NET中使用server.MapPath()。 但是,我们可以在Windows应用程序中做什么?

我的意思是,如果有一个.NET内置函数可以处理…

你有没有尝试过:

string absolute = Path.GetFullPath(relative); 

? 请注意,这将使用进程的当前工作目录,而不是包含可执行文件的目录。 如果这没有帮助,请澄清你的问题。

如果你想获得相对于你的.exe的path,然后使用

 string absolute = Path.Combine(Application.ExecutablePath, relative); 

这个适用于不同驱动器上的path,驱动相对path和实际相对path。 哎呀,它甚至工作,如果basePath不是真的绝对; 它总是使用当前工作目录作为最后的回退。

 public static String GetAbsolutePath(String relativePath, String basePath) { if (relativePath == null) return null; if (basePath == null) basePath = Path.GetFullPath("."); // quick way of getting current working directory else basePath = GetAbsolutePath(basePath, null); // to be REALLY sure ;) String path; // specific for windows paths starting on \ - they need the drive added to them. // I constructed this piece like this for possible Mono support. if (!Path.IsPathRooted(relativePath) || "\\".Equals(Path.GetPathRoot(relativePath))) { if (relativePath.StartsWith(Path.DirectorySeparatorChar.ToString())) path = Path.Combine(Path.GetPathRoot(basePath), relativePath.TrimStart(Path.DirectorySeparatorChar)); else path = Path.Combine(basePath, relativePath); } else path = relativePath; // resolves any internal "..\" to get the true full path. return Path.GetFullPath(path); }