我需要从相对路径获取绝对路径,但是使用除执行程序集之外的文件夹来解析"."
和".."
。 Path.GetFullPath
没有提供这样的超载。
例如,假设我有以下路径:
..\MyOtherFolder\foo.bar
程序集正在执行的文件夹是:
c:\users\me\desktop\source\myproj\bin\debug\
但实际上它可能位于任何地方。
我想将“当前”文件夹指定为c:\test
,以便".."
解析为"c:\"
。
有谁知道这是否内置于.NET框架中?如果没有,我打算制作一个实用工具方法,但我想我先检查一下(特别是因为没有静态扩展方法......)。
编辑:
Path.Combine
无效。所有这个方法基本上都是连接两个字符串。
答案 0 :(得分:7)
你试过吗
Path.GetFullPath(Path.Combine(@"C:\test", @"..\MyOtherFolder\foo.bar"))
这应该可以解决问题。
答案 1 :(得分:5)
public string FullPathRelativeTo(string root, string partialPath)
{
string oldRoot = Directory.GetCurrentDirectory();
try {
Directory.SetCurrentDirectory(root);
return Path.GetFullPath(partialPath);
}
finally {
Directory.SetCurrentDirectory(oldRoot);
}
}
答案 2 :(得分:4)
如果您目前在c:\test
,并且想要c:\MyOtherFolder\foo.bar
而不知道自己在c:\test
,那么
Environment.CurrentDirectory = @"..\MyOtherFolder"; //navigation accepts relative path
string fullPath = Directory.GetCurrentDirectory(); // returns full path
之后,您可能希望将当前目录设置回以前的位置。
答案 3 :(得分:3)
你可以做到
new DirectoryInfo( @"..\MyOtherFolder\foo.bar" ).FullName
答案 4 :(得分:2)
尝试使用Path.Combine(...)方法,它必须帮助您实现您想要的......