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