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