J'essaie de rejoindre un chemin Windows avec un chemin relatif en utilisant Path.Combine
.
Cependant, Path.Combine(@"C:\blah",@"..\bling")
renvoie C:\blah\..\bling
au lieu de C:\bling\
.
Est-ce que quelqu'un sait comment accomplir cela sans écrire mon propre résolveur de chemin relatif (ce qui ne devrait pas être trop difficile)?
Réponses:
Ce qui fonctionne:
(résultat: chemin absolu = "C: \ bling.txt")
Ce qui ne marche pas
(résultat: chemin absolu = "C: /blah/bling.txt")
la source
C:\\blah..\\bling.txt
et cela ne fonctionne pas. Dans ce cas, vous pouvez les ajouter manuellement à la chaîne ou fairePath.GetFullPath(Path.Combine(baseDirectory, relativePath))
C:\bling.txt
?Appelez Path.GetFullPath sur le chemin combiné http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx
(Je suis d'accord que Path.Combine devrait le faire par lui-même)
la source
Path.GetFullPath(Path.Combine(@"..\..\blah",@"\bling"))
la source
c:\windows\system32
Pour les applications universelles Windows
Path.GetFullPath()
ne sont pas disponibles, vous pouvez utiliser laSystem.Uri
classe à la place:la source
Cela vous donnera exactement ce dont vous avez besoin (le chemin ne doit PAS exister pour que cela fonctionne)
la source
Faites attention aux backslashes, ne les oubliez pas (ne les utilisez pas deux fois :)
la source
Path.GetFullPath()
ne fonctionne pas avec les chemins relatifs.Voici la solution qui fonctionne avec les deux chemins relatifs + absolus. Il fonctionne à la fois sous Linux + Windows et il garde le
..
comme prévu au début du texte (au repos, ils seront normalisés). La solution repose toujours surPath.GetFullPath
le correctif avec une petite solution de contournement.C'est une méthode d'extension alors utilisez-la comme
text.Canonicalize()
la source