Ho scoperto che le varianti di System.IO.Path.Combine(myPath, "..")sono le più semplici e affidabili. Ancora di più se ciò che dice northben è vero, quel GetParent richiede una chiamata in più se c'è una barra finale. Questo, per me, è inaffidabile.
Path.Combine ti assicura di non sbagliare mai con le barre.
..si comporta esattamente come fa ovunque in Windows. Puoi aggiungere qualsiasi numero di file\.. a un percorso in cmd o explorer e si comporterà esattamente come descritto di seguito.
Alcuni ..comportamenti di base :
- Se c'è un nome di file,
..lo taglierà:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..") => D:\Grandparent\Parent\
- Se il percorso è una directory,
..salirà di un livello:
Path.Combine(@"D:\Grandparent\Parent\", "..") => D:\Grandparent\
..\.. segue le stesse regole, due volte di seguito:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", @"..\..")=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", @"..\..")=>D:\
- E questo ha lo stesso identico effetto:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..", "..")=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", "..", "..")=>D:\