Descobri que as variantes de System.IO.Path.Combine(myPath, "..")
são as mais fáceis e confiáveis. Ainda mais se o que northben diz for verdade, que GetParent requer uma chamada extra se houver uma barra final. Isso, para mim, não é confiável.
Path.Combine garante que você nunca errará com barras.
..
se comporta exatamente como em qualquer outro lugar do Windows. Você pode adicionar qualquer número de \..
a um caminho no cmd ou explorer e ele se comportará exatamente como eu descrevo abaixo.
Alguns ..
comportamentos básicos :
- Se houver um nome de arquivo, ele
..
será cortado:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..")
=> D:\Grandparent\Parent\
- Se o caminho for um diretório,
..
subirá um nível:
Path.Combine(@"D:\Grandparent\Parent\", "..")
=> D:\Grandparent\
..\..
segue as mesmas regras, duas vezes seguidas:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", @"..\..")
=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", @"..\..")
=>D:\
- E isso tem exatamente o mesmo efeito:
Path.Combine(@"D:\Grandparent\Parent\Child.txt", "..", "..")
=> D:\Grandparent\
Path.Combine(@"D:\Grandparent\Parent\", "..", "..")
=>D:\