Índice
0. Introducción1. Problema
2. Solución
3. Discusión de la Solución
4. Práctica: Código C#
5. Conclusiones
6. Glosario
7. Literatura & Enlaces
0. Introducción
En C# podemos escribir rutas absolutas o rutas relativas para referenciar directorios y archivos; en el caso de estas últimas, estudiáremos cómo funcionan y cómo podemos obtener las rutas absolutas a partir del directorio de trabajo usando varios de los métodos disponibles en la clase
System.IO.Directory
.1. Problema
Necesitamos establecer un directorio de trabajo (ruta relativa) basado en la ubicación actual del proyecto y referenciar recursos en esa misma ruta.
2. Solución
En C# contamos con la clase
System.IO.Directory
y sus métodos SetCurrentDirectory
y GetCurrentDirectory
para establecer y obtener la ubicación actual del proyecto.3. Discusión de la Solución
La clase
Directory
[2] (namespace System.IO
) tiene definidos los métodos GetCurrentDirectory
y SetCurrentDirectory
para obtener y establecer la ruta actual del proyecto. Con esta ruta relativa podemos luego obtener la ruta absoluta usando el método static
GetFullPath
[5] de la clase Path
[6] de archivos y directorios.
Asumamos que hemos creado un archivo en el directorio A:\C#\VisualCSharp2010Recipes\Cap05\R05-13; ahora cuando usemos el método
GetCurrentDirectory
obtendremos es el directorio R05-13.
Ahora lo que queremos es movernos al directorio R05-14, el cual corresponde con el directorio de trabajo de la receta actual debemos escribir
Directory.SetCurrentDirectory(@"..\R05-14");
Ejemplo de uso:
Archivo C# UsoRutaRelativa.cs [Enlace alternativo][Enlace alternativo]:
En la línea 15 asumimos que la ruta actual de trabajo es el directorio R05-13. Con la invocación de
SetCurrentDirectory
establecemos ese directorio como nuestro directorio de trabajo actual: línea 16. Mostramos en pantalla ese valor de directorio actual. Notemos que con Directory.SetCurrentDirectory(@"..\R05-14");
(línea 24) cambiamos el directorio actual de trabajo usando la ruta relativa ..\R05-14; es decir, del directorio actual R05-13 nos movemos al directorio padre y partir de ahí localizamos el directorio R05-14 y cambiamos a él.
Compilación:
- csc /target:exe UsoRutaRelativa.cs
Ejecución assembly:
- .\UsoRutaRelativa.exe
> Prueba de ejecución:
Figura 1. Ejecución assembly UsoRutaRelativa.exe. |
4. Práctica: Código C#
Para afianzar el conocimiento práctico de la manipulación de rutas relativas, escribamos más código C#: en este ejemplo demostraremos, además de usar
GetCurrentDirectory
y SetCurrentDirectory
, recurriremos al método Path.GetFullPath
para trabajar con rutas relativas.Archivo C# ManipulacionRutasRelativas.cs [Enlace alternativo][Enlace alternativo]:
Mostramos la ruta actual de trabajo en la línea 14. Luego, en la línea 15, usando
Path.GetFullPath(string)
obtenemos la ruta absoluta para el archivo ArchivoTexto.txt. Con la invocación Directory.SetCurrentDirectory(@"C:\etc");
(línea 20) establecemos como ruta de trabajo C:\etc. Nuevamente con
Path.GetFullPath(string)
(línea 22) obtenemos la ruta absoluta para el archivo ArchivoTexto.txt.
Compilación:
- csc /target:exe ManipulacionRutasRelativas.cs
Ejecución assembly:
- .\ManipulacionRutasRelativas.exe
> Prueba de ejecución:
Figura 2. Ejecución assembly ManipulacionRutasRelativas.exe. |
5. Conclusiones
Hemos elaborado esta receta para comrender cómo trabajar con rutas relativas, y hemos concluido que resulta simple y directo con el uso de los métodos
GetCurrentDirectory
, SetCurrentDirectory
, y Path.GetFullPath
. Entender la manipulación de rutas relativas nos va a permitir trabajar con recursos de un proyecto sin necesidad de tener que especificar cadenas de caracteres excesivamente largas que referencien rutas absolutas.
En la próxima receta C# aprenderemos a crear un archivo temporal.
6. Glosario
- Archivo
- Directorio
- Directorio de trabajo
- Ruta
- Ruta absoluta
- Ruta relativa
7. Literatura & Enlaces
[1]: Visual C# 2010 Recipes by Allen Jones and Adam Freeman. Copyright 2010 Allen Jones and Adam Freeman, 978-1-4302-2525-6.[2]: Directory Class (System.IO) - https://msdn.microsoft.com/en-us/library/System.IO.Directory(v=vs.110).aspx
[3]: Directory.GetCurrentDirectory Method (System.IO) - https://msdn.microsoft.com/en-us/library/system.io.directory.getcurrentdirectory(v=vs.110).aspx
[4]: Directory.SetCurrentDirectory Method (System.IO) - https://msdn.microsoft.com/en-us/library/system.io.directory.setcurrentdirectory(v=vs.110).aspx
[5]: Path.GetFullPath Method (System.IO) - https://msdn.microsoft.com/en-us/library/system.io.path.getfullpath(v=vs.110).aspx
[6]: Path Class (System.IO) - https://msdn.microsoft.com/en-us/library/System.IO.Path(v=vs.110).aspx
M
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.