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:\