11 nov 2011

Listando el contenido de una carpeta o folder

Vamos a implementar un FolderBrowserDialog para mostrar la ventana que se utiliza para cargar el explorador de carpetas de la máquina en una aplicación windows. Lo que vamos a implementar es: escoger una carpeta,  buscar en esta los archivos cuyo tipo calcen con el filtro indicado y listar el resultado.

Para esto vamos añadir los siguientes controles a un windows forms: 


Como puede verse hay dos etiquetas, tres cajas de texto y dos botones.

Por medio del botón Examinar vamos a llamar programáticamente al FolderBrowserDialog con el siguiente código:

private void cmdExaminar_Click(object sender, EventArgs e)
{
    FolderBrowserDialog folderDlg = new FolderBrowserDialog();
    folderDlg.ShowNewFolderButton = false;
    
    DialogResult result = folderDlg.ShowDialog();
    if (result == DialogResult.OK)
    {
        txtpath.Text = folderDlg.SelectedPath;
        Environment.SpecialFolder root = folderDlg.RootFolder;    
    }
}

Como puede verse una vez capturado la ruta de la carpeta seleccionada, ésta se deja en la caja de texto txtPath.

Una vez hecho esto podemos jugar con la caja de texto de filtro para escoger el tipo de documentos a listar y buscamos éstos por medio del siguiente código del botón Buscar:

private void cmdBuscar_Click(object sender, EventArgs e)
{
    DirectoryInfo di = new DirectoryInfo(txtpath.Text);
    FileInfo[] rgFiles = di.GetFiles(txtFiltro.Text);

    StringBuilder sb = new StringBuilder();

    foreach (FileInfo fi in rgFiles)
    {
        sb.AppendLine(fi.Name);

    }
    txtResultado.Text = sb.ToString();
    folderBrowserDialog1.SelectedPath = txtpath.Text;
}

Este código recorre los archivos que se encuentren dentro de la ruta especificada y los muestra en la caja de texto txtResultado, la cual está marcada como multilínea. Recordar utilizar el namespace System.IO  para que funcione todo adecuadamente.

Con este código ya funciona nuestra aplicación: como podemos ver en las siguientes capturas de pantalla:
















Muy útil cuando se requiere listar cierta cantidad de archivos en un correo o en un documento.