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

问题描述 投票:0回答:8

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

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

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

c# relative-path absolute-path
8个回答
171
投票
string exactPath = Path.GetFullPath(yourRelativePath);

有效


117
投票

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

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

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

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

36
投票

这有效。

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

14
投票

这是将相对值转换为绝对值的最佳方法!

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

8
投票

您可以使用 Path.Combine 与“基本”路径,然后在结果上使用 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

6
投票

您尝试过

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

1
投票

这对我有用。

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

© www.soinside.com 2019 - 2024. All rights reserved.