Estoy tratando de unirme a una ruta de Windows con una ruta relativa usando Path.Combine
.
Sin embargo, Path.Combine(@"C:\blah",@"..\bling")
devuelve en C:\blah\..\bling
lugar de C:\bling\
.
¿Alguien sabe cómo lograr esto sin escribir mi propio solucionador de rutas relativas (que no debería ser demasiado difícil)?
Respuestas:
Que funciona:
(resultado: absolutePath = "C: \ bling.txt")
Lo que no funciona
(resultado: absolutePath = "C: /blah/bling.txt")
fuente
C:\\blah..\\bling.txt
y eso no funcionará. En ese caso, puede agregarlos manualmente a la cadena o hacerloPath.GetFullPath(Path.Combine(baseDirectory, relativePath))
C:\bling.txt
?Llame a Path.GetFullPath en la ruta combinada http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx
(Estoy de acuerdo que Path.Combine debería hacer esto por sí mismo)
fuente
Path.GetFullPath(Path.Combine(@"..\..\blah",@"\bling"))
fuente
c:\windows\system32
Para las aplicaciones universales de Windows
Path.GetFullPath()
no está disponible, puede usar laSystem.Uri
clase en su lugar:fuente
Esto le dará exactamente lo que necesita (la ruta NO tiene que existir para que esto funcione)
fuente
Tenga cuidado con las barras invertidas, no las olvide (ni las use dos veces :)
fuente
Path.GetFullPath()
no funciona con rutas relativas.Aquí está la solución que funciona con rutas relativas + absolutas. Funciona tanto en Linux como en Windows y mantiene
..
como se esperaba al principio del texto (en reposo se normalizarán). La solución aún dependePath.GetFullPath
de hacer la corrección con una pequeña solución.Es un método de extensión, utilícelo como
text.Canonicalize()
fuente