[C#] Manipulación de directorios -- System.IO.Directory

Introducción

En este articulo les voy a explicar como poder crear, eliminar y listar directorios. Ademas como listar archivos y eliminar todo el contenido de un directorio.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Todo esto va ser posible gracias a la clase que nos provee el .NET Framework llamada Directory que se encuentra en el espacio de nombres System.IO.

Debemos importar nuestra referencia para obtener acceso a dicha clase

using System.IO;

Crear Directorio

Vamos a comenzar por crear un directorio, esto es posible con el método CreateDirectory en el cual debemos pasar como argumento la ruta de la ubicación de nuestro directorio junto al nombre de nuestro nuevo directorio. Es por eso que en nuestra interfaz tenemos un FolderBrowserDialog (...) que nos sirve para buscar la ubicación y el textbox directorio en el cual vamos a indicar el nombre de nuestro nuevo directorio.

        private void buscarBtn_Click(object sender, EventArgs e)
        {
            BDirectorio.ShowDialog();
            rutaTxt.Text = BDirectorio.SelectedPath;
        }

Para crear nuestro nuevo directorio

        private void crearBtn_Click(object sender, EventArgs e)
        {
            string ruta = string.Empty;

            if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio");
            }
            else if(Directory.Exists(rutaTxt.Text + @"\" + directorioTxt.Text))
            {
                MessageBox.Show("El directorio ya existe");
            }
            else { 
                ruta = rutaTxt.Text; 
                Directory.CreateDirectory(ruta + @"\" + directorioTxt.Text); 
            }
        }

Verán que estoy realizando una serie de validaciones para evitar que pinche nuestro programa, de hecho podríamos poner un try catch y lanzar una excepción personalizada, pero lo hice de este modo para que puedan entender y ademas conocer otros métodos que expone la clase Directory para poder validar.

Primeros validamos si nuestro ubicación esta vacía utilizando el método IsNullOrEmpty, si es así, significa que no hemos seleccionado ninguna ubicación y mostramos un mensaje.

Si hemos seleccionado una ubicación, debemos validar si existe (puede ocurrir que otro usuario la elimine), es por eso que utilizamos el método Exist de nuestra clase Directory en el cual pasamos como argumento la ubicación del directorio.

Si todo va bien, llego el momento de crear nuestro directorio con el método CreateDirectory donde le pasamos como argumento la ubicación junto al nombre de nuestra carpeta.

Eliminar Directorio

Para eliminar un directorio vamos a utilizar el método Delete en el cual pasamos como argumento la ruta de nuestro directorio. Ademas en este método posee otra sobrecarga el cual tiene como argumento la ruta de nuestro directorio y un valor boolean que especifica si se borran todos los subdirectorios y archivos del directorio.

Veamos la primer forma Delete(string), este método tiene de especial que solo elimina un directorio que este completamente vació.

        private void eliminarBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(rutaTxt.Text) && Directory.GetDirectories(rutaTxt.Text).Length == 0)
            {
                if (Directory.GetFiles(rutaTxt.Text).Length > 0)
                {
                    MessageBox.Show("El directorio posee uno o mas archivos");
                }
                else { Directory.Delete(rutaTxt.Text); }
                
            }
            else if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio"); 
            }
            else { MessageBox.Show("El directorio posee subdirectorios"); }
        }

Como dije, este método borra un directorio que este vació por completo, por lo cual debemos realizar una serie de validaciones.

Primero validamos si hay una ruta y ademas si posee algún directorio dicha ruta. En caso de pasar esa validación, validamos si el directorio posee uno o mas archivos, si no posee procedemos a eliminar el directorio con el método Delete. También podemos validar si ese directorio existe con el método Exist que hemos mencionado anteriormente, el ejemplo lo pueden adaptar a sus necesidades.

Veamos ahora la segunda forma  Delete(string,bool)

        private void eliminarCBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if(Directory.Exists(rutaTxt.Text))
                {
                    Directory.Delete(rutaTxt.Text, true); 
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
        }

En este caso, solo validamos si el directorio existe, no es necesario validar si tiene subdirectorios o archivos ya que este método con el argumento de tipo boolean en true elimina todo el contenido sin importar lo que haya adentro.

Listar SubDirectorios y Archivos

En este caso vamos a ver como poder listar los subdirectorios que tiene un directorio. Esto es posible gracias al método GetDirectories que devuelve un array de string.

Solo tenemos que recorrer el array y agregar los items en un listbox para este ejemplo

        private void directoriosLsBtn_Click(object sender, EventArgs e)
        {
            ArDireLS.Items.Clear();

            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if (Directory.Exists(rutaTxt.Text))
                {
                    string[] directorios = Directory.GetDirectories(rutaTxt.Text);

                    foreach (string item in directorios)
                    {
                        ArDireLS.Items.Add(item.ToString());
                    }
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
            
        }

Declaramos un array de string llamado directorios y lo asignamos al metodo GetDirectories el cual le pasamos como argumento nuestra ruta del directorio.

Recorremos el array y vamos agregando cada item a nuestro listbox.

Lo mismo ocurre para listar archivos dentro de un directorio, en este caso, se divide en dos partes, ya que primero vamos a listar los archivos en el directorio actual y por otra parte vamos a listar los archivos en los subdirectorios

        private void archivosLsBtn_Click(object sender, EventArgs e)
        {
            ArDireLS.Items.Clear();

            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if (Directory.Exists(rutaTxt.Text))
                {
                    //Dir Actual
                    string[] archivosDirActual = Directory.GetFiles(rutaTxt.Text);
                    foreach (string archivoDA in archivosDirActual)
                    {
                        ArDireLS.Items.Add(archivoDA.ToString());
                    }

                    //SubDir
                    string[] subDirectorios = Directory.GetDirectories(rutaTxt.Text);
                    foreach (string subDir in subDirectorios)
                    {
                        string[] archivosSubDir = Directory.GetFiles(subDir.ToString());
                        foreach (string archivoSD in archivosSubDir)
                        {
                            ArDireLS.Items.Add(archivoSD.ToString());
                        }
                    }
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
        }

Lo mismo ocurre en GetFiles devuelve una matriz de string que contiene las rutas de los archivos, donde también agregamos los archivos a nuestro listbox.

Fin


Código Fuente

Dropbox  

Descargar

[C#] Manipulación de directorios -- System.IO.Directory

Introducción

En este articulo les voy a explicar como poder crear, eliminar y listar directorios. Ademas como listar archivos y eliminar todo el contenido de un directorio.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Todo esto va ser posible gracias a la clase que nos provee el .NET Framework llamada Directory que se encuentra en el espacio de nombres System.IO.

Debemos importar nuestra referencia para obtener acceso a dicha clase

using System.IO;

Crear Directorio

Vamos a comenzar por crear un directorio, esto es posible con el método CreateDirectory en el cual debemos pasar como argumento la ruta de la ubicación de nuestro directorio junto al nombre de nuestro nuevo directorio. Es por eso que en nuestra interfaz tenemos un FolderBrowserDialog (...) que nos sirve para buscar la ubicación y el textbox directorio en el cual vamos a indicar el nombre de nuestro nuevo directorio.

        private void buscarBtn_Click(object sender, EventArgs e)
        {
            BDirectorio.ShowDialog();
            rutaTxt.Text = BDirectorio.SelectedPath;
        }

Para crear nuestro nuevo directorio

        private void crearBtn_Click(object sender, EventArgs e)
        {
            string ruta = string.Empty;

            if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio");
            }
            else if(Directory.Exists(rutaTxt.Text + @"\" + directorioTxt.Text))
            {
                MessageBox.Show("El directorio ya existe");
            }
            else { 
                ruta = rutaTxt.Text; 
                Directory.CreateDirectory(ruta + @"\" + directorioTxt.Text); 
            }
        }

Verán que estoy realizando una serie de validaciones para evitar que pinche nuestro programa, de hecho podríamos poner un try catch y lanzar una excepción personalizada, pero lo hice de este modo para que puedan entender y ademas conocer otros métodos que expone la clase Directory para poder validar.

Primeros validamos si nuestro ubicación esta vacía utilizando el método IsNullOrEmpty, si es así, significa que no hemos seleccionado ninguna ubicación y mostramos un mensaje.

Si hemos seleccionado una ubicación, debemos validar si existe (puede ocurrir que otro usuario la elimine), es por eso que utilizamos el método Exist de nuestra clase Directory en el cual pasamos como argumento la ubicación del directorio.

Si todo va bien, llego el momento de crear nuestro directorio con el método CreateDirectory donde le pasamos como argumento la ubicación junto al nombre de nuestra carpeta.

Eliminar Directorio

Para eliminar un directorio vamos a utilizar el método Delete en el cual pasamos como argumento la ruta de nuestro directorio. Ademas en este método posee otra sobrecarga el cual tiene como argumento la ruta de nuestro directorio y un valor boolean que especifica si se borran todos los subdirectorios y archivos del directorio.

Veamos la primer forma Delete(string), este método tiene de especial que solo elimina un directorio que este completamente vació.

        private void eliminarBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(rutaTxt.Text) && Directory.GetDirectories(rutaTxt.Text).Length == 0)
            {
                if (Directory.GetFiles(rutaTxt.Text).Length > 0)
                {
                    MessageBox.Show("El directorio posee uno o mas archivos");
                }
                else { Directory.Delete(rutaTxt.Text); }
                
            }
            else if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio"); 
            }
            else { MessageBox.Show("El directorio posee subdirectorios"); }
        }

Como dije, este método borra un directorio que este vació por completo, por lo cual debemos realizar una serie de validaciones.

Primero validamos si hay una ruta y ademas si posee algún directorio dicha ruta. En caso de pasar esa validación, validamos si el directorio posee uno o mas archivos, si no posee procedemos a eliminar el directorio con el método Delete. También podemos validar si ese directorio existe con el método Exist que hemos mencionado anteriormente, el ejemplo lo pueden adaptar a sus necesidades.

Veamos ahora la segunda forma  Delete(string,bool)

        private void eliminarCBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if(Directory.Exists(rutaTxt.Text))
                {
                    Directory.Delete(rutaTxt.Text, true); 
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
        }

En este caso, solo validamos si el directorio existe, no es necesario validar si tiene subdirectorios o archivos ya que este método con el argumento de tipo boolean en true elimina todo el contenido sin importar lo que haya adentro.

Listar SubDirectorios y Archivos

En este caso vamos a ver como poder listar los subdirectorios que tiene un directorio. Esto es posible gracias al método GetDirectories que devuelve un array de string.

Solo tenemos que recorrer el array y agregar los items en un listbox para este ejemplo

        private void directoriosLsBtn_Click(object sender, EventArgs e)
        {
            ArDireLS.Items.Clear();

            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if (Directory.Exists(rutaTxt.Text))
                {
                    string[] directorios = Directory.GetDirectories(rutaTxt.Text);

                    foreach (string item in directorios)
                    {
                        ArDireLS.Items.Add(item.ToString());
                    }
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
            
        }

Declaramos un array de string llamado directorios y lo asignamos al metodo GetDirectories el cual le pasamos como argumento nuestra ruta del directorio.

Recorremos el array y vamos agregando cada item a nuestro listbox.

Lo mismo ocurre para listar archivos dentro de un directorio, en este caso, se divide en dos partes, ya que primero vamos a listar los archivos en el directorio actual y por otra parte vamos a listar los archivos en los subdirectorios

        private void archivosLsBtn_Click(object sender, EventArgs e)
        {
            ArDireLS.Items.Clear();

            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if (Directory.Exists(rutaTxt.Text))
                {
                    //Dir Actual
                    string[] archivosDirActual = Directory.GetFiles(rutaTxt.Text);
                    foreach (string archivoDA in archivosDirActual)
                    {
                        ArDireLS.Items.Add(archivoDA.ToString());
                    }

                    //SubDir
                    string[] subDirectorios = Directory.GetDirectories(rutaTxt.Text);
                    foreach (string subDir in subDirectorios)
                    {
                        string[] archivosSubDir = Directory.GetFiles(subDir.ToString());
                        foreach (string archivoSD in archivosSubDir)
                        {
                            ArDireLS.Items.Add(archivoSD.ToString());
                        }
                    }
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
        }

Lo mismo ocurre en GetFiles devuelve una matriz de string que contiene las rutas de los archivos, donde también agregamos los archivos a nuestro listbox.

Fin


Código Fuente

Dropbox  

Descargar

[C#] Manipulación de directorios -- System.IO.Directory

Introducción

En este articulo les voy a explicar como poder crear, eliminar y listar directorios. Ademas como listar archivos y eliminar todo el contenido de un directorio.

Interfaz Gráfica

La interfaz gráfica es la siguiente:


Todo esto va ser posible gracias a la clase que nos provee el .NET Framework llamada Directory que se encuentra en el espacio de nombres System.IO.

Debemos importar nuestra referencia para obtener acceso a dicha clase

using System.IO;

Crear Directorio

Vamos a comenzar por crear un directorio, esto es posible con el método CreateDirectory en el cual debemos pasar como argumento la ruta de la ubicación de nuestro directorio junto al nombre de nuestro nuevo directorio. Es por eso que en nuestra interfaz tenemos un FolderBrowserDialog (...) que nos sirve para buscar la ubicación y el textbox directorio en el cual vamos a indicar el nombre de nuestro nuevo directorio.

        private void buscarBtn_Click(object sender, EventArgs e)
        {
            BDirectorio.ShowDialog();
            rutaTxt.Text = BDirectorio.SelectedPath;
        }

Para crear nuestro nuevo directorio

        private void crearBtn_Click(object sender, EventArgs e)
        {
            string ruta = string.Empty;

            if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio");
            }
            else if(Directory.Exists(rutaTxt.Text + @"\" + directorioTxt.Text))
            {
                MessageBox.Show("El directorio ya existe");
            }
            else { 
                ruta = rutaTxt.Text; 
                Directory.CreateDirectory(ruta + @"\" + directorioTxt.Text); 
            }
        }

Verán que estoy realizando una serie de validaciones para evitar que pinche nuestro programa, de hecho podríamos poner un try catch y lanzar una excepción personalizada, pero lo hice de este modo para que puedan entender y ademas conocer otros métodos que expone la clase Directory para poder validar.

Primeros validamos si nuestro ubicación esta vacía utilizando el método IsNullOrEmpty, si es así, significa que no hemos seleccionado ninguna ubicación y mostramos un mensaje.

Si hemos seleccionado una ubicación, debemos validar si existe (puede ocurrir que otro usuario la elimine), es por eso que utilizamos el método Exist de nuestra clase Directory en el cual pasamos como argumento la ubicación del directorio.

Si todo va bien, llego el momento de crear nuestro directorio con el método CreateDirectory donde le pasamos como argumento la ubicación junto al nombre de nuestra carpeta.

Eliminar Directorio

Para eliminar un directorio vamos a utilizar el método Delete en el cual pasamos como argumento la ruta de nuestro directorio. Ademas en este método posee otra sobrecarga el cual tiene como argumento la ruta de nuestro directorio y un valor boolean que especifica si se borran todos los subdirectorios y archivos del directorio.

Veamos la primer forma Delete(string), este método tiene de especial que solo elimina un directorio que este completamente vació.

        private void eliminarBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(rutaTxt.Text) && Directory.GetDirectories(rutaTxt.Text).Length == 0)
            {
                if (Directory.GetFiles(rutaTxt.Text).Length > 0)
                {
                    MessageBox.Show("El directorio posee uno o mas archivos");
                }
                else { Directory.Delete(rutaTxt.Text); }
                
            }
            else if (string.IsNullOrEmpty(rutaTxt.Text))
            { 
                MessageBox.Show("Debe buscar un directorio"); 
            }
            else { MessageBox.Show("El directorio posee subdirectorios"); }
        }

Como dije, este método borra un directorio que este vació por completo, por lo cual debemos realizar una serie de validaciones.

Primero validamos si hay una ruta y ademas si posee algún directorio dicha ruta. En caso de pasar esa validación, validamos si el directorio posee uno o mas archivos, si no posee procedemos a eliminar el directorio con el método Delete. También podemos validar si ese directorio existe con el método Exist que hemos mencionado anteriormente, el ejemplo lo pueden adaptar a sus necesidades.

Veamos ahora la segunda forma  Delete(string,bool)

        private void eliminarCBtn_Click(object sender, EventArgs e)
        {
            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if(Directory.Exists(rutaTxt.Text))
                {
                    Directory.Delete(rutaTxt.Text, true); 
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
        }

En este caso, solo validamos si el directorio existe, no es necesario validar si tiene subdirectorios o archivos ya que este método con el argumento de tipo boolean en true elimina todo el contenido sin importar lo que haya adentro.

Listar SubDirectorios y Archivos

En este caso vamos a ver como poder listar los subdirectorios que tiene un directorio. Esto es posible gracias al método GetDirectories que devuelve un array de string.

Solo tenemos que recorrer el array y agregar los items en un listbox para este ejemplo

        private void directoriosLsBtn_Click(object sender, EventArgs e)
        {
            ArDireLS.Items.Clear();

            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if (Directory.Exists(rutaTxt.Text))
                {
                    string[] directorios = Directory.GetDirectories(rutaTxt.Text);

                    foreach (string item in directorios)
                    {
                        ArDireLS.Items.Add(item.ToString());
                    }
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
            
        }

Declaramos un array de string llamado directorios y lo asignamos al metodo GetDirectories el cual le pasamos como argumento nuestra ruta del directorio.

Recorremos el array y vamos agregando cada item a nuestro listbox.

Lo mismo ocurre para listar archivos dentro de un directorio, en este caso, se divide en dos partes, ya que primero vamos a listar los archivos en el directorio actual y por otra parte vamos a listar los archivos en los subdirectorios

        private void archivosLsBtn_Click(object sender, EventArgs e)
        {
            ArDireLS.Items.Clear();

            if (!string.IsNullOrEmpty(rutaTxt.Text))
            {
                if (Directory.Exists(rutaTxt.Text))
                {
                    //Dir Actual
                    string[] archivosDirActual = Directory.GetFiles(rutaTxt.Text);
                    foreach (string archivoDA in archivosDirActual)
                    {
                        ArDireLS.Items.Add(archivoDA.ToString());
                    }

                    //SubDir
                    string[] subDirectorios = Directory.GetDirectories(rutaTxt.Text);
                    foreach (string subDir in subDirectorios)
                    {
                        string[] archivosSubDir = Directory.GetFiles(subDir.ToString());
                        foreach (string archivoSD in archivosSubDir)
                        {
                            ArDireLS.Items.Add(archivoSD.ToString());
                        }
                    }
                }
                else { MessageBox.Show("El directorio no existe"); }
            }
            else { MessageBox.Show("Debe buscar un directorio"); }
        }

Lo mismo ocurre en GetFiles devuelve una matriz de string que contiene las rutas de los archivos, donde también agregamos los archivos a nuestro listbox.

Fin


Código Fuente

Dropbox  

Descargar


No hay comentarios. :

Publicar un comentario