ruta relativa pathcombine net convertir combine asp absoluta c# .net windows path filesystems

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)?



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")?