LINQ y directorios de archivos
Muchas operaciones del sistema de archivos son esencialmente consultas y, por lo tanto, son adecuadas para LINQ.
Nota
Si desea realizar consultas mediante programación en el contenido de varios tipos de archivos y documentos, piense en utilizar Windows Desktop Search Engine.Aunque actualmente no se puede consultar con LINQ, proporciona un servicio de indización eficaz que administra eficazmente las dificultades del sistema de archivos.
Observe que las consultas de esta sección no son destructivas. No se utilizan para cambiar el contenido de los archivos o carpetas originales. Se aplica la regla de que las consultas no deberían producir efectos adversos. Por lo general, el código (incluidas las consultas que realizan operaciones de creación, actualización o eliminación) que se utiliza para modificar los datos de origen se debería mantener apartado del código que se usa simplemente para consultar los datos.
Esta sección contiene los siguientes temas:
Cómo: Buscar archivos con un nombre o atributo especificados
Muestra cómo buscar archivos examinando una o más propiedades de su objeto FileInfo.Cómo: Agrupar archivos por extensión (LINQ)
Muestra cómo devolver grupos de objetos FileInfo en función de su extensión de nombre de archivo.Cómo: Buscar el número total de bytes en un conjunto de carpetas (LINQ)
Muestra cómo devolver el número total de bytes de todos los archivos de un árbol de directorios especificado.Cómo: Comparar el contenido de dos carpetas (LINQ)
Muestra cómo devolver todos los archivos que se encuentran en dos carpetas especificadas, así como todos los archivos que se encuentran en una carpeta pero no en la otra.Cómo: Cómo buscar el archivo o archivos de mayor tamaño en un árbol de directorios (LINQ)
Muestra cómo devolver el archivo mayor o menor, o un número dado de archivos, de un árbol de directorios.Cómo: Buscar archivos duplicados en un árbol de directorios (LINQ)
Muestra cómo agrupar todos los nombres de archivo que aparecen en más de una ubicación en un árbol de directorios especificado. También muestra cómo realizar comparaciones más complejas basadas en un comparador personalizado.Cómo: Consultar el contenido de los archivos de una carpeta (LINQ)
Muestra cómo recorrer en iteración las carpetas de un árbol, abrir cada archivo y consultar el contenido del mismo.
Comentarios
La creación de orígenes de datos que representen con precisión el contenido del sistema de archivos y administren las excepciones sin problemas es algo compleja. En los ejemplos de esta sección se crea una colección de instantáneas de objetos FileInfo que representa todos los archivos de una carpeta raíz especificada y todas sus subcarpetas. El estado real de cada FileInfo puede cambiar desde que se comienza hasta que se ejecuta la consulta. Por ejemplo, puede crear una lista de objetos FileInfo para utilizarla como origen de datos. Si 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 producirá una excepción FileNotFoundException en la consulta, aunque no esté consultando el sistema de archivos directamente. Algunas consultas de esta sección usan un método independiente que utiliza estas excepciones concretas en algunos casos. Otra opción es actualizar el origen de datos dinámicamente, mediante FileSystemWatcher.