Относительный путь к абсолютному пути в C #? - PullRequest
70 голосов
/ 25 января 2011

У меня есть XML-файлы, которые содержат пути к файлам href к изображениям (например, ".... \ images \ image.jpg").Hrefs содержат относительные пути.Теперь мне нужно извлечь hrefs для изображений и превратить их в абсолютные пути в файловой системе.

Я знаю о методе GetFullPath, но я попробовал его, и он, кажется, работает только из набора CurrentDirectory,который выглядит как C: так что я не понимаю, как я мог бы это использовать.И все же, у меня есть абсолютный путь к файлу, содержащему hrefs, и относительные пути href, так что для меня это простая задача - подсчитать количество частей ".... \" на основе абсолютного путисодержащий файл, кажется, должен быть способ сделать это и программно.

Я надеюсь, что есть какой-то простой метод, о котором я просто не знаю!Есть идеи?

Ответы [ 8 ]

110 голосов
/ 25 сентября 2014
string exactPath = Path.GetFullPath(yourRelativePath);

работает

88 голосов
/ 25 января 2011

Если вы знаете, что настоящий каталог, в котором находится XML-файл, использует Path.Combine, например,

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

Если вы хотите вернуть полный путь, свернув любой из .., вы можете использовать:

Path.GetFullPath((new Uri(absolute_path)).LocalPath);
30 голосов
/ 25 января 2011

Это сработало.

var s = Path.Combine(@"C:\some\location", @"..\other\file.txt");
s = Path.GetFullPath(s);
5 голосов
/ 25 января 2011

Вы пробовали 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
3 голосов
/ 02 декабря 2018

Это лучший способ для преобразования Относительного пути в абсолютный путь!

string absolutePath = System.IO.Path.GetFullPath(relativePath);
3 голосов
/ 25 января 2011

Вы можете использовать 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
0 голосов
/ 11 апреля 2018

Это сработало для меня.

//used in an ASP.NET MVC app
private const string BatchFilePath = "/MyBatchFileDirectory/Mybatchfiles.bat"; 
var batchFile = HttpContext.Current.Server.MapPath(BatchFilePath);
0 голосов
/ 25 января 2011

Взгляните на Path.Combine http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx

...