C#中绝对路径的相对路径?

时间:2011-01-25 16:40:36

标签: c# relative-path absolute-path

我有xml文件,其中包含图像的href文件路径(例如“.... \ images \ image.jpg”)。 hrefs包含相对路径。现在,我需要将hrefs提取到图像并将它们转换为文件系统中的绝对路径。

我知道GetFullPath方法,但是我尝试了它,它似乎只能在CurrentDirectory集合中工作,它似乎是C:所以我不知道如何使用它。而且,我有包含hrefs和href相对路径的文件的绝对路径,所以因为我根据绝对路径计算“.... \”部分的数量是一个简单的任务。包含文件,似乎必须有一种方法来以编程方式执行此操作。

我希望有一些我不知道的简单方法!有什么想法吗?

8 个答案:

答案 0 :(得分:105)

string exactPath = Path.GetFullPath(yourRelativePath);

作品

答案 1 :(得分:87)

假设您知道XML文件所在的真实目录使用Path.Combine,例如

var absolute_path = Path.Combine(directoryXmlLivesIn, "..\images\image.jpg");

如果你想要回复任何..折叠的完整路径,那么你可以使用:

Path.GetFullPath((new Uri(absolute_path)).LocalPath);

答案 2 :(得分:29)

这很有用。

var s = Path.Combine(@"C:\some\location", @"..\other\file.txt");
s = Path.GetFullPath(s);

答案 3 :(得分:5)

您是否尝试过Server.MapPath方法。这是一个例子

string relative_path = "/Content/img/Upload/Reports/59/44A0446_59-1.jpg";
string absolute_path = Server.MapPath(relative_path);
//will be c:\users\.....\Content\img\Upload\Reports\59\44A0446_59-1.jpg

答案 4 :(得分:3)

您可以将Path.Combine与“base”路径一起使用,然后在结果上使用GetFullPath。

string absPathContainingHrefs = GetAbsolutePath(); // Get the "base" path
string fullPath = Path.Combine(absPathContainingHrefs, @"..\..\images\image.jpg");
fullPath = Path.GetFullPath(fullPath);  // Will turn the above into a proper abs path

答案 5 :(得分:3)

将相对路径转换为绝对路径的最佳方法!

string absolutePath = System.IO.Path.GetFullPath(relativePath);

答案 6 :(得分:0)

答案 7 :(得分:0)

这对我有用。

//used in an ASP.NET MVC app
private const string BatchFilePath = "/MyBatchFileDirectory/Mybatchfiles.bat"; 
var batchFile = HttpContext.Current.Server.MapPath(BatchFilePath);