Chemin relatif vers le chemin absolu en C #?

J’ai des fichiers XML contenant des chemins d’access aux images href (par exemple “…. \ images \ image.jpg”). Les hrefs contiennent des chemins relatifs. Maintenant, je dois extraire les hrefs sur les images et les transformer en chemins absolus dans le système de fichiers.

Je connais la méthode GetFullPath, mais je l’ai essayée et cela semble fonctionner uniquement avec l’ensemble CurrentDirectory, qui semble être C: je ne vois donc pas comment l’utiliser. Et pourtant, j’ai le chemin absolu du fichier contenant les hrefs et les chemins relatifs href, donc comme c’est une tâche simple pour moi de compter le nombre de parties “…. \” en fonction du chemin absolu de le fichier contenant, il semble y avoir un moyen de faire cela aussi par programmation.

J’espère qu’il y a une méthode simple que je ne connais pas! Des idées?

En supposant que vous connaissiez le répertoire réel, le fichier XML est utilisé dans Path.Combine, par exemple

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

Si vous souhaitez récupérer le chemin complet avec n’importe quel fichier .., vous pouvez utiliser:

 Path.GetFullPath((new Uri(absolute_path)).LocalPath); 
 ssortingng exactPath = Path.GetFullPath(yourRelativePath); 

travaux

Cela a fonctionné.

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

Avez-vous essayé la méthode Server.MapPath . Voici un exemple

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

Vous pouvez utiliser Path.Combine avec le chemin “base”, puis GetFullPath sur les résultats.

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

Cela a fonctionné pour moi.

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