relativa - path.combine c#
Path.Combine absolute con cadenas de ruta relativas (5)
Esto le dará exactamente lo que necesita (la ruta NO debe existir para que esto funcione)
DirectoryInfo di = new DirectoryInfo(@"C:/blah/../bling");
string cleanPath = di.FullName;
Path.Combine
unirme a una ruta de Windows con una ruta relativa usando Path.Combine
.
Sin embargo, Path.Combine(@"C:/blah",@"../bling")
devuelve C:/blah/../bling
lugar de C:/bling/
.
¿Alguien sabe cómo lograr esto sin escribir mi propio resolvedor de ruta relativa (que no debería ser demasiado difícil)?
Llame a Path.GetFullPath en la ruta de acceso combinada http://msdn.microsoft.com/en-us/library/system.io.path.getfullpath.aspx
> Path.GetFullPath(Path.Combine(@"C:/blah/",@"../bling"))
C:/bling
(Estoy de acuerdo Path.Combine debería hacer esto por sí mismo)
Para las aplicaciones universales de Windows Path.GetFullPath()
no está disponible, puede usar la clase System.Uri
lugar:
Uri uri = new Uri(Path.Combine(@"C:/blah/",@"../bling"));
Console.WriteLine(uri.LocalPath);
Que funciona:
string relativePath = "..//bling.txt";
string baseDirectory = "C://blah//";
string absolutePath = Path.GetFullPath(baseDirectory + relativePath);
(resultado: absolutePath = "C: / bling.txt")
Lo que no funciona
string relativePath = "..//bling.txt";
Uri baseAbsoluteUri = new Uri("C://blah//");
string absolutePath = new Uri(baseAbsoluteUri, relativePath).AbsolutePath;
(resultado: absolutePath = "C: /blah/bling.txt")
Path.GetFullPath(@"c:/windows/temp/../system32")?