118 votes

Chemin relatif vers chemin absolu en C#?

J'ai des fichiers XML qui contiennent des chemins de fichiers href vers des images (par exemple, "....\images\image.jpg"). Les href contiennent des chemins relatifs. Maintenant, je dois extraire les href vers 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 elle semble fonctionner uniquement à partir du CurrentDirectory défini, qui semble être C:, donc je ne vois pas comment je pourrais l'utiliser. De plus, j'ai le chemin absolu du fichier contenant les href, et les chemins relatifs des href, donc comme il est facile pour moi de compter en arrière le nombre de parties "....\" en fonction du chemin absolu du fichier contenant, il semble qu'il doit y avoir un moyen de le faire de manière programmable également.

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

183voto

cahit beyaz Points 74
chaîne cheminExact = Path.GetFullPath(votreCheminRelatif);

fonctionne

119voto

Paolo Points 11860

En supposant que vous connaissez le répertoire réel dans lequel se trouve le fichier XML, utilisez Path.Combine, par exemple

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

Si vous souhaitez obtenir le chemin complet avec tous les .. collapse alors vous pouvez utiliser:

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

36voto

David Crowell Points 2412

Cela a fonctionné.

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

16voto

C'est la meilleure façon de convertir le chemin Relatif en chemin Absolu !

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

8voto

Reed Copsey Points 315315

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

string absPathContainingHrefs = GetAbsolutePath(); // Obtenez le chemin "de base"
string fullPath = Path.Combine(absPathContainingHrefs, @"..\..\images\image.jpg");
fullPath = Path.GetFullPath(fullPath);  // Transformera ce qui précède en un chemin absolu valide

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X