Acceder a archivos y carpetas de la aplicacion en c#



Muchas  veces necesitamos acceder a las distintas carpetas que de nuestra aplicación en tiempo de ejecución, ya sea para saber si existe  un archivo, copiarlo, borrarlo, moverlo, listar lo que tiene cierta carpeta o para lo que sea que queramos hacer esto.

Para acceder a las carpetas de la aplicación necesitaremos el espacio de nombres System.IO :

“El espacio de nombres System.IO contiene tipos que permiten leer y escribir en los archivos y secuencias de datos, así como tipos que proporcionan compatibilidad básica con los archivos y directorios.”.

“Utilice la clase Directory para operaciones típicas como copiar, mover, cambiar de nombre, crear y eliminar directorios. También puede utilizar la clase Directory para obtener y establecer información de DateTime relacionada con la creación, el acceso y la escritura de un directorio.”

Dependiendo de nuestra necesidad podremos usar las clases para hacer lo que queramos con las carpetas y archivos dentro de la aplicación, les presentare varios escenarios y les colocare el código necesario para que funcione la solución:
//Obtener los archivos de una ruta:

// Directory.GetFiles(path,filtro)    
 
string[] v = Directory.GetFiles(Server.MapPath("Archivos"), "*.txt");

El metodo GetFiles recibe algunos parametros como son la ruta de la carpeta y/o un filtro para los archivos y deveuelve un Array con la lista de los archivos contenidos en esta carpeta.

Vale aclarar que este método ignora las subcarpetas.

Para establecer la ruta de una carpeta yo suelo utilizar un método llamado Server.MapPath el cual devuelve la ruta relativa o virtual de la carpeta en el servidor.

El filtro es opcional y utiliza Regex, si solo quieres devolver los archivos con extensión txt utilizas “*.txt”.

Si lo que deseas es manipular los archivos entonces el siguiente método te será de ayuda:
private string[] Archivos(string ruta)
    {
        //Obtengo acceso total a la carpeta

        DirectoryInfo picrut = new DirectoryInfo(ruta);
        //Leo y obtengo acceso a los archivos dentro de la carpeta.

        //FileInfo[] se comporta como un array por medio del cual se pueden manipular los archivos (copiar, mover, eliminar, crear, etc)

        FileInfo[] rgFiles = picrut.GetFiles("*.txt");


        //Inicializao un array dandole como tamaño el total de los archivos

        string[] v = new string[rgFiles.Length];


        //Recorro el FileInfo para llenar el array con el nombre de los archivos

        for (int i = 0; i < rgFiles.Length; i++)
        {
            //Aqui puedo manipular los archivos


           // rgFiles[i].Delete(); Para eliminar los archivos
           // rgFiles[i].CopyTo("ruta"); Para copiar el archivo a una ruta especifica
           // rgFiles[i].MoveTo("ruta"); Para mover el archivo a otro lugar
     
            //guardo el nombre de cada archivo en el array
            v[i] = rgFiles[i].Name;
        }

        return v;

    }


Hay muchos métodos mas para manipulación de archivos, pero los iremos viendo mas adelante:

Les dejo un pequeño ejemplo para la descarga aquí.

Espero que lo disfruten y comenten. ;)

"El Conocimiento es un Don Divino que se incrementa a medida que se COMPARTE."
Google