Относительный путь к абсолютному пути в С#?
У меня есть xml файлы, содержащие пути файла href к изображениям (например, "....\images\image.jpg" ). В hrefs содержатся относительные пути. Теперь мне нужно извлечь hrefs к изображениям и превратить их в абсолютные пути в файловой системе.
Я знаю о методе GetFullPath, но я попробовал его, и он, похоже, работает только из набора CurrentDirectory, который, как представляется, является C: поэтому я не вижу, как я мог бы это использовать. И тем не менее, у меня есть абсолютный путь к файлу, содержащему hrefs и относительные пути href, так как для меня простая задача подсчитать количество "...." частей, основанных на абсолютном пути содержащий файл, кажется, что также должен быть способ сделать это программно.
Я надеюсь, что есть простой метод, о котором я просто не знаю! Любые идеи?
Ответы
Ответ 1
Предполагая, что вы знаете реальный каталог, в котором живет файл XML, Path.Combine, например.
var absolute_path = Path.Combine(directoryXmlLivesIn, "..\images\image.jpg");
Если вы хотите вернуть полный путь с любым.. рухнули, вы можете использовать:
Path.GetFullPath((new Uri(absolute_path)).LocalPath);
Ответ 2
string exactPath = Path.GetFullPath(yourRelativePath);
работы
Ответ 3
Это сработало.
var s = Path.Combine(@"C:\some\location", @"..\other\file.txt");
s = Path.GetFullPath(s);
Ответ 4
Вы пробовали метод 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
Ответ 5
Вы можете использовать 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
Это лучший способ для преобразования Относительного пути к абсолютному пути!
string absolutePath = System.IO.Path.GetFullPath(relativePath);
Ответ 7
Взгляните на Path.Combine
http://msdn.microsoft.com/en-us/library/fyy7a5kt.aspx
Ответ 8
Это сработало для меня.
//used in an ASP.NET MVC app
private const string BatchFilePath = "/MyBatchFileDirectory/Mybatchfiles.bat";
var batchFile = HttpContext.Current.Server.MapPath(BatchFilePath);