He descubierto que las variantes de System.IO.Path.Combine(myPath, "..")
son las más fáciles y fiables. Más aún si lo que dice Northben es cierto, GetParent requiere una llamada adicional si hay una barra al final. Eso, para mí, no es confiable.
Path.Combine se asegura de que nunca te equivoques con las barras.
..
se comporta exactamente como lo hace en cualquier otro lugar de Windows. Puede agregar cualquier número de \..
a una ruta en cmd o explorer y se comportará exactamente como describo a continuación.
Algún ..
comportamiento básico :
- Si hay un nombre de archivo,
..
lo cortará:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..")
=> D:\Grandparent\Parent\
- Si la ruta es un directorio,
..
subirá un nivel:
Path.Combine(@"D:\Grandparent\Parent\", "..")
=> D:\Grandparent\
..\..
sigue las mismas reglas, dos veces seguidas:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", @"..\..")
=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", @"..\..")
=>D:\
- Y esto tiene exactamente el mismo efecto:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..", "..")
=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", "..", "..")
=>D:\