viernes, 17 de julio de 2015

Receta C# No. 5-13: Cómo Determinar Si una Ruta es un Directorio o un Archivo

Índice

0. Introducción
1. 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

Quizás una de las tareas más básicas y comunes consiste en determinar si una ruta pasada a un programa de manipulación de archivos y directorios corresponde ya sea con un archivo o un directorio. En esta receta vamos a aprender a llevar a cabo esta tarea con dos clases disponibles en System.IO: Directory y File.

1. Problema

Construir una aplicación basada en consola para determinar si un conjunto de rutas pasadas como argumentos corresponden con un directorio o un archivo.

2. Solución

Las clases Directory y File cuentan con el método static Exists para comprobar si una cadena de caracteres pasada como argumento es un archivo o un directorio, respectivamente.

3. Discusión de la Solución

Lo que en realidad se logra con el método Exists de las clases Directory [2] y File [3] es determinar si el directorio o el archivo existen, respectivamente; y de forma implícita determinar si es un directorio (si existe) o un archivo (si existe).

Una de las ventajas interesantes de este método es que funciona ya sea para una ruta relativa o absoluta; e inclusive, facilita la determinación de un recurso en una unidad compartida en la red (ruta que es especificada bajo la representación UNC [4]) [1].

4. Práctica: Código C#

Creemos una aplicación en lenguaje de programación C# para permitir al usuario pasar un conjunto de cadenas de caracteres de rutas de archivos o directorios son archivos o directorios y determinar si corresponden con directorios o archivos, o finalmente informar que la ruta no existe.

Por cada argumento pasado desde la línea de comandos (líneas 16-32) validamos con los métodos Directory.Exists(string) (línea 20) y File.Exists(string) si se trata de un directorio o un archivo, respectivamente. Cuando ninguna de las dos condiciones anteriores se cumple, el programa muestra un mensaje advirtiendo al usuario que el elemento actual (ruta) no existe (línea 30).

Compilación:


  1. csc /target:exe ComprobacionRutas.cs

Ejecución assembly:


  1. .\ComprobacionRutas.exe

> Prueba de ejecución:
Ejecución assembly ComprobacionRutas.exe
Figura 1. Ejecución assembly ComprobacionRutas.exe.

5. Conclusiones

Hemos aprendido que con el método Exists podemos comprobar si una ruta es un archivo o un directorio; desde luego, para ello hay que invocarlo desde la clase que corresponda: Directory o File.


En la próxima receta C# estudiáremos cómo trabajar con rutas relativas.

6. Glosario

  • Archivo
  • Clase
  • Directorio
  • Método static
  • Ruta

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.Exists Method (System.IO) - https://msdn.microsoft.com/en-us/library/system.io.directory.exists(v=vs.110).aspx
[3]: File.Exists Method (System.IO) - https://msdn.microsoft.com/en-us/library/system.io.file.exists(v=vs.110).aspx
[4]: Uniform Naming Convention - https://en.wikipedia.org/wiki/Path_(computing)#Uniform_Naming_Convention


M

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.