LINQ y directorios de archivos (Visual Basic)

Muchas operaciones de sistema de archivos son esencialmente consultas y, por tanto, son adecuadas para el enfoque LINQ.

Tenga en cuenta que las consultas en esta sección no son destructivas. No se usan para cambiar el contenido de las carpetas o los archivos originales. Esto sigue la regla de que las consultas no deben causar efectos secundarios. En general, cualquier código (incluidas las consultas que ejecutan operadores de creación actualización y eliminación) que modifica los datos de origen se debe separar del código que solo consulta los datos.

Esta sección contiene los siguientes temas:

Procedimiento para buscar archivos con un nombre o atributo especificados (Visual Basic)
Muestra cómo buscar archivos examinando una o más propiedades de su objeto FileInfo.

Procedimiento para agrupar archivos por extensión (LINQ) (Visual Basic)
Muestra cómo devolver grupos del objeto FileInfo basándose en su extensión de nombre de archivo.

Procedimiento para buscar el número total de bytes en un conjunto de carpetas (LINQ) (Visual Basic)
Muestra cómo devolver el número total de bytes en todos los archivos en un árbol de directorio especificado.

Procedimiento para comparar el contenido de dos carpetas (LINQ) (Visual Basic)
Muestra cómo devolver todos los archivos que se encuentran en dos carpetas especificadas y también todos los archivos que se encuentran en una carpeta pero no en la otra.

Cómo buscar el archivo o archivos de mayor tamaño en un árbol de directorios (LINQ) (Visual Basic)
Muestra cómo devolver el archivo mayor o menor, o un número especificado de archivos, en un árbol de directorios.

Procedimiento para buscar archivos duplicados en un árbol de directorios (LINQ) (C#)
Muestra cómo agrupar todos los nombres de archivo que aparecen en más de una ubicación en un árbol de directorio especificado. También muestra cómo realizar comparaciones más complejas basadas en un comparador personalizado.

Procedimiento para consultar el contenido de los archivos de una carpeta (LINQ) (Visual Basic)
Muestra cómo recorrer en iteración las carpetas de un árbol, abrir cada archivo y consultar el contenido del archivo.

Comentarios

Hay cierta complejidad en la creación de un origen de datos que representa de forma precisa el contenido del sistema de archivos y controla las excepciones correctamente. En los ejemplos de esta sección se crea una colección de instantáneas de objetos FileInfo que representa todos los archivos en una carpeta raíz especificada y todas sus subcarpetas. El estado real de cada FileInfo puede cambiar en el periodo comprendido entre el comienzo y el fin de la ejecución de una consulta. Por ejemplo, se puede crear una lista de objetos FileInfo para usarla como origen de datos. Si se intenta tener acceso a la propiedad Length en una consulta, el objeto FileInfo intentará tener acceso al sistema de archivos para actualizar el valor de Length. Si el archivo ya no existe, se obtendrá una excepción FileNotFoundException en la consulta, aunque no se esté consultando el sistema de archivos directamente. Algunas consultas de esta sección usan un método independiente que consume estas excepciones concretas en casos determinados. Otra opción consiste en mantener actualizado el origen de datos de manera dinámica mediante FileSystemWatcher.

Vea también