Chequear si un archivo existe con C#



Una de la tareas más frecuentes al desarrollar un sistema software es el trabajar con archivos. Y dentro de esa categoría de tareas está la de chequear o comprobar si un archivo existe.


En C# podemos chequear si un archivo existe de diversas formas:

  • El archivo no existe.

  • El archivo existe pero no tenemos los permisos suficientes para comprobarlo.



El código siguiente permite chequear si un archivo existe:
static void Main(string[] args)

        {

            string ruta = @"d:\Compartir\ejercicio16.zip";

            if (File.Exists(ruta))

            {

                Console.WriteLine("El archivo existe.");

            }

            else {

                Console.WriteLine("El archivo no existe.");

            }

            Console.Read();

        }

File.Exists

Este método está dentro del espacio de nombres System.IO. Retorna true o false de acuerdo a si existe o no el archivo.

Este método no devuelve un error o excepción en caso no tengamos los permisos para verificar la existencia del archivo, por lo que devolverá falso, aunque el archivo exista. Así que es mejor comprobar esos permisos.

El método File.Exists es muy útil y nos ayuda a evitar errores cuando manipulamos archivos. Es común programar acciones con archivos sin comprobar la existencia, aparentemente el archivo “debería” existir, pero por alguna razón no está donde debería y el programa produce una excepción.

Si se quiere chequear la existencia de una carpeta o directorio la función necesaria es:
if (Directory.Exists(ruta))

            {

                Console.WriteLine("La carpeta existe.");

            }

            else

            {

                Console.WriteLine("La carpeta no existe.");

            }

Directory.Exists

Si se quiere saber si un archivo existe dentro de una carpeta, hay dos opciones:

  • Hacer un bucle dentro de la carpeta para verificar que el archivo existe, lo que es poco eficiente.


string carpeta = @"d:\Compartir";

            string archivo = @"ejercicio161.zip";




            DirectoryInfo carpetaX = new DirectoryInfo(carpeta);

            string mensaje = String.Format("El archivo {0} no está dentro de la carpeta {1}.", archivo, carpeta);

            foreach (FileInfo archivoX in carpetaX.GetFiles())

            {

                if (archivoX.Name == archivo)

                {

                    mensaje = String.Format("El archivo {0} está dentro de la carpeta {1}.", archivo, carpeta);

                    break;

                } 

            }

  • Utilizar la ruta de la carpeta y el nombre del archivo para verificar su existencia, que es la mejor forma.

string carpeta1 = @"d:\Compartir";

            string archivo1 = @"ejercicio161.zip";

            if (File.Exists(Path.Combine(carpeta1, archivo1)))

            {

                Console.WriteLine(String.Format("El archivo {0} está dentro de la carpeta {1}.", archivo, carpeta));

            }

            else

            {

                Console.WriteLine(String.Format("El archivo {0} no está dentro de la carpeta {1}.", archivo, carpeta));

            }

Si se quiere saber si el parámetro es una carpeta o un archivo, se debe utilizar la clase FileAttributes.
string parametro1 = @"d:\Compartir\ejercicio16.zip";



            FileAttributes atributosArchivo = File.GetAttributes(parametro1);




            if ((atributosArchivo & FileAttributes.Archive) == FileAttributes.Archive) {

                Console.WriteLine(String.Format("La ruta {0} corresponde a un archivo.", parametro1));

            }

            if ((atributosArchivo & FileAttributes.Directory) == FileAttributes.Directory)

            {

                Console.WriteLine(String.Format("La ruta {0} corresponde a una carpeta.", parametro1));

            }

Generalmente, después que chequeamos la existencia de un archivo, procederemos a realizar alguna operación como eliminarlo. Hay que tener en cuenta que entre el momento que comprobemos la existencia del archivo y lo vayamos a eliminar 

otro proceso puede acceder al archivo, así que nuestro código debería contemplar tal cosa.

Eso sería todo, si te ha servido este artículo, por favor comparte la página con tus amigos.

 

Comentarios