pathcombine net convert combine asp c# .net path directory combinations

c# - net - pathcombine



Path.Combine y la notaciĆ³n de puntos (5)

Pero parece que GetFullPath no siempre es correcto. Probar:

Console.WriteLine(System.IO.Path.GetFullPath(@"//machine/sharea/foldera/../shareb/folderb")); Console.WriteLine(System.IO.Path.GetFullPath(@"//machine/sharea/foldera/../../shareb/folderb"));

Muestran el mismo resultado, parece que no puede moverlo para ir a un recurso compartido diferente. La respuesta correcta para el segundo debe ser

// machinea / shareb / folderb

pero da

// machinea / sharea / shareb / folderb

para ambos

Esta pregunta ya tiene una respuesta aquí:

Estoy buscando algo similar al método Path.Combine que me ayudará a combinar correctamente rutas absolutas y relativas. Por ejemplo, quiero

Path.Combine(@"c:/alpha/beta", @"../gamma");

ceder c:/alpha/gamma lugar de c:/alpha/../gamma como Path.Combine hace Path.Combine . ¿Hay alguna manera fácil de lograr esto? No hace falta decir que también quiero hacer un punto . ruta o múltiples .. rutas (por ejemplo, ../../ ) para que funcionen correctamente.


Probablemente pueda hacer un Path.Combine seguido de un Path.GetFullPath.


Puede llamar a Path.GetFullPath para resolver esto.

Por ejemplo, este código:

string path = Path.Combine(@"c:/alpha/beta", @"../gamma"); Console.WriteLine(path); path = Path.GetFullPath(path); Console.WriteLine(path);

Se imprimirá:

c:/alpha/beta/../gamma c:/alpha/gamma


Use Path.GetFullPath

string path = Path.Combine(@"c:/alpha/beta", @"../gamma"); Console.WriteLine(Path.GetFullPath(path));

o la clase DirectoryInfo :

string path = Path.Combine(@"c:/alpha/beta", @"../gamma"); DirectoryInfo info = new DirectoryInfo(path); Console.WriteLine(info.FullName);

Ambos producirán:

c:/alpha/gamma


podrías usar una combinación de 2 llamadas como estas:

string path = Path.Combine(@"c:/alpha/beta", @"../gamma"); string result = Path.GetFullPath(path);

Y eso debería darte los resultados que estás buscando.