Rutas relativas y absolutas

15/03/2006 - 12:40 por Zephryn Xirdal | Informe spam
Holas, chiscos.

Tengo un problema un tanto curioso.

Tengo una ruta absoluta y me gustaría convertirla en relativa. Al revés sé
que se puede hacer mediante Path.GetFullPath, pero al revés no he
encontrado nada. Lo único que se le acerca es Path.IsPathRooted, que solo
me devuelve si es absoluta o relativa...
El Estado no está dotado de una inteligencia y honestidad superiores, sino
de una fuerza física superior. -- H.D. Thoreau --

Preguntas similare

Leer las respuestas

#1 Zephryn Xirdal
15/03/2006 - 12:53 | Informe spam
En Wed, 15 Mar 2006 12:40:00 +0100, Zephryn Xirdal
escribió:

Holas, chiscos.

Tengo un problema un tanto curioso.

Tengo una ruta absoluta y me gustaría convertirla en relativa. Al revés
sé que se puede hacer mediante Path.GetFullPath, pero al revés no he
encontrado nada. Lo único que se le acerca es Path.IsPathRooted, que
solo me devuelve si es absoluta o relativa...



He pensado en una forma un tanto "políticamente incorrecta", pero me
gustaría saber si hay algún método que lo haga.

Tengo la ruta absoluta, absPath.
Tengo la ruta absoluta desde la que quiero obtener la relativa,
absBasePath.
Obtengo una que sea la "diferencia" entre la absPath y la absBasePath. Si
la "diferencia" es cero, es que se trata de una que no tiene relación con
la otra y me vale la absoluta.



El Estado no está dotado de una inteligencia y honestidad superiores, sino
de una fuerza física superior. -- H.D. Thoreau --
Respuesta Responder a este mensaje
#2 Leonardo Hernández
18/03/2006 - 00:48 | Informe spam
La verdad que me gustaría ayudarte pero no logro comprender el problema.
¿Podrías poner un ejemplo de ruta y el resultado esperado?

Sds, Leonardo

"Zephryn Xirdal" escribió en el mensaje
news:
En Wed, 15 Mar 2006 12:40:00 +0100, Zephryn Xirdal
escribió:

Holas, chiscos.

Tengo un problema un tanto curioso.

Tengo una ruta absoluta y me gustaría convertirla en relativa. Al revés
sé que se puede hacer mediante Path.GetFullPath, pero al revés no he
encontrado nada. Lo único que se le acerca es Path.IsPathRooted, que
solo me devuelve si es absoluta o relativa...



He pensado en una forma un tanto "políticamente incorrecta", pero me
gustaría saber si hay algún método que lo haga.

Tengo la ruta absoluta, absPath.
Tengo la ruta absoluta desde la que quiero obtener la relativa,
absBasePath.
Obtengo una que sea la "diferencia" entre la absPath y la absBasePath. Si
la "diferencia" es cero, es que se trata de una que no tiene relación con
la otra y me vale la absoluta.



El Estado no está dotado de una inteligencia y honestidad superiores, sino
de una fuerza física superior. -- H.D. Thoreau --
Respuesta Responder a este mensaje
#3 Vyacheslav Popov
18/03/2006 - 13:04 | Informe spam
Hola Zephryn

Aqui te paso un ejemplo de construir una ruta absoluta, hace poco tambien
estaba calientandome la cabeza...

private string BuildUrl(string urlBase, string url)
{
System.Uri absolute;

try
{
absolute = new Uri(url, true);
}
catch (Exception)
{
System.Uri uri1 = new Uri(urlBase);

System.UriBuilder uriBuld = new UriBuilder(System.Uri.UriSchemeHttp,
uri1.Host, uri1.Port);
uriBuld.Path = uri1.Segments[0];
for (int i=1; i<uri1.Segments.Length-1; i++)
uriBuld.Path += uri1.Segments[i];
uriBuld.Path += url;

absolute = uriBuld.Uri;
}

return absolute.ToString();
}

Espero que te sirva.

Saludos.
"Zephryn Xirdal" escribió en el mensaje
news:
En Wed, 15 Mar 2006 12:40:00 +0100, Zephryn Xirdal
escribió:

Holas, chiscos.

Tengo un problema un tanto curioso.

Tengo una ruta absoluta y me gustaría convertirla en relativa. Al revés
sé que se puede hacer mediante Path.GetFullPath, pero al revés no he
encontrado nada. Lo único que se le acerca es Path.IsPathRooted, que
solo me devuelve si es absoluta o relativa...



He pensado en una forma un tanto "políticamente incorrecta", pero me
gustaría saber si hay algún método que lo haga.

Tengo la ruta absoluta, absPath.
Tengo la ruta absoluta desde la que quiero obtener la relativa,
absBasePath.
Obtengo una que sea la "diferencia" entre la absPath y la absBasePath. Si
la "diferencia" es cero, es que se trata de una que no tiene relación con
la otra y me vale la absoluta.



El Estado no está dotado de una inteligencia y honestidad superiores, sino
de una fuerza física superior. -- H.D. Thoreau --
Respuesta Responder a este mensaje
#4 Zephryn Xirdal
18/03/2006 - 13:40 | Informe spam
Es justo al revés lo que quiero.

En Sat, 18 Mar 2006 13:04:56 +0100, Vyacheslav Popov
escribió:




Hola Zephryn

Aqui te paso un ejemplo de construir una ruta absoluta, hace poco tambien
estaba calientandome la cabeza...

private string BuildUrl(string urlBase, string url)
{
System.Uri absolute;

try
{
absolute = new Uri(url, true);
}
catch (Exception)
{
System.Uri uri1 = new Uri(urlBase);

System.UriBuilder uriBuld = new UriBuilder(System.Uri.UriSchemeHttp,
uri1.Host, uri1.Port);
uriBuld.Path = uri1.Segments[0];
for (int i=1; i<uri1.Segments.Length-1; i++)
uriBuld.Path += uri1.Segments[i];
uriBuld.Path += url;

absolute = uriBuld.Uri;
}

return absolute.ToString();
}

Espero que te sirva.

Saludos.
"Zephryn Xirdal" escribió en el
mensaje
news:
En Wed, 15 Mar 2006 12:40:00 +0100, Zephryn Xirdal
escribió:

Holas, chiscos.

Tengo un problema un tanto curioso.

Tengo una ruta absoluta y me gustaría convertirla en relativa. Al revés
sé que se puede hacer mediante Path.GetFullPath, pero al revés no he
encontrado nada. Lo único que se le acerca es Path.IsPathRooted, que
solo me devuelve si es absoluta o relativa...



He pensado en una forma un tanto "políticamente incorrecta", pero me
gustaría saber si hay algún método que lo haga.

Tengo la ruta absoluta, absPath.
Tengo la ruta absoluta desde la que quiero obtener la relativa,
absBasePath.
Obtengo una que sea la "diferencia" entre la absPath y la absBasePath.
Si
la "diferencia" es cero, es que se trata de una que no tiene relación
con
la otra y me vale la absoluta.



El Estado no está dotado de una inteligencia y honestidad superiores,
sino
de una fuerza física superior. -- H.D. Thoreau --










Estadísticas BOINC: http://www.boincsynergy.com/images/...b-3905.jpg
=La locura es un cierto placer que solo el loco conoce.
Respuesta Responder a este mensaje
#5 Zephryn Xirdal
18/03/2006 - 13:52 | Informe spam
En Sat, 18 Mar 2006 00:48:16 +0100, Leonardo Hernández
escribió:

La verdad que me gustaría ayudarte pero no logro comprender el problema.
¿Podrías poner un ejemplo de ruta y el resultado esperado?

Sds, Leonardo




Te comento. Tenemos una ruta obtenida de un control de apertura de
fichero, que vamos a llamar rutaFich: <unidad>:<dir1><dir2><dir3><fichero>

Luego tenemos la aplicación ejecutándse en: <unidad1>:<dir4><dir5> y que
llamaremos rutaApp.

Si <unidad1>==<unidad>, <dir1>==<dir4>, la ruta de rutaFich podría quedar
como .\..\<dir2><dir3><fichero>.

Con un ejemplo:
string rutaFich=@"D:\Apps\Datos\Imagenes\Figuras\cosa.jpg";
string rutaApp =@"D:\Apps\Programa\"

string rutaRel=AbsToRel(rutaFich,rutaApp);

y rutaRel valdría: @".\..\Datos\Imagenes\Figuras\cosa.jpg".

A la hora de abrir el fichero, debería concatenar rutaApp y rutaRel,
quedando:

@"D:\Apps\Programa\.\..\Datos\Imagenes\Figuras\cosa.jpg"

que es una ruta perfectamente válida.

Así se evita que al transportar todo el sistema desde D: a C: tener que
reconstruirlo todo, incluso sería válido transportándolo todo a una nueva
carpeta base.

Es lo que hacen muchos programas con sus datos, que tienen una dirección
base obtenida en tiempo de ejecución y todas las demás relativas a esa,
asi, si se mueve el proyecto, no hay que andar reconstruyuendo rutas ni
otros menesteres.

Creo que el Visual Studio lo hace así, y sin embargo el eMbedded C++ no.

De todos modos estoy pensando hacer yo un método así, o definir una clase
estática que lo haga y ponerlo por ahí.


"Zephryn Xirdal" escribió en el
mensaje
news:
En Wed, 15 Mar 2006 12:40:00 +0100, Zephryn Xirdal
escribió:

Holas, chiscos.

Tengo un problema un tanto curioso.

Tengo una ruta absoluta y me gustaría convertirla en relativa. Al revés
sé que se puede hacer mediante Path.GetFullPath, pero al revés no he
encontrado nada. Lo único que se le acerca es Path.IsPathRooted, que
solo me devuelve si es absoluta o relativa...



He pensado en una forma un tanto "políticamente incorrecta", pero me
gustaría saber si hay algún método que lo haga.

Tengo la ruta absoluta, absPath.
Tengo la ruta absoluta desde la que quiero obtener la relativa,
absBasePath.
Obtengo una que sea la "diferencia" entre la absPath y la absBasePath.
Si
la "diferencia" es cero, es que se trata de una que no tiene relación
con
la otra y me vale la absoluta.



El Estado no está dotado de una inteligencia y honestidad superiores,
sino
de una fuerza física superior. -- H.D. Thoreau --










Estadísticas BOINC: http://www.boincsynergy.com/images/...b-3905.jpg
=La locura es un cierto placer que solo el loco conoce.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida