LINQ et répertoires de fichiers (C#)

De nombreuses opérations du système de fichiers sont des requêtes et l’approche de LINQ leur convient donc bien.

Les requêtes de cette section sont non destructives. Elles ne sont pas utilisées pour modifier le contenu des fichiers ou des dossiers d’origine. La règle suivie est que les requêtes ne doivent pas provoquer des effets secondaires. En règle générale, tout code (y compris les requêtes qui utilisent des opérateurs de création / mise à jour / suppression) qui modifie les données sources doit rester distinct du code qui interroge simplement les données.

Cette section contient les rubriques suivantes :

Guide pratique pour interroger des fichiers ayant un attribut ou un nom donné (C#)
Montre comment rechercher des fichiers en examinant une ou plusieurs propriétés de son objet FileInfo.

Guide pratique pour regrouper des fichiers par extension (LINQ) (C#)
Montre comment retourner des groupes d’objets FileInfo en fonction de leur extension de nom de fichier.

Guide pratique pour rechercher le nombre total d’octets dans un ensemble de dossiers (LINQ) (C#)
Montre comment retourner le nombre total d’octets dans tous les fichiers d’une arborescence de répertoires spécifiée.

Guide pratique pour comparer le contenu de deux dossiers (LINQ) (C#)
Montre comment retourner tous les fichiers qui sont présents dans deux dossiers spécifiés, ainsi que tous les fichiers qui sont présents dans un dossier mais pas dans l’autre.

Guide pratique pour rechercher le ou les fichiers les plus volumineux dans une arborescence de répertoires (LINQ) (C#)
Montre comment retourner le fichier le plus grand ou le plus petit, ou un nombre spécifié de fichiers, dans une arborescence de répertoires.

Guide pratique pour interroger des fichiers dupliqués dans une arborescence de répertoires (LINQ) (C#)
Montre comment regrouper tous les noms de fichier qui se trouvent dans plusieurs emplacements d’une arborescence de répertoires spécifiée. Montre aussi comment effectuer des comparaisons plus complexes avec un comparateur personnalisé.

Guide pratique pour interroger le contenu de fichiers dans un dossier (LINQ) (C#)
Montre comment itérer au sein des dossiers d’une arborescence, ouvrir chaque fichier et interroger le contenu du fichier.

Commentaires

La création d’une source de données représentant avec précision le contenu du système de fichiers et la gestion correcte des exceptions induisent une certaine complexité. Les exemples de cette section créent une collection d’instantanés d’objets FileInfo qui représente tous les fichiers d’un dossier racine spécifié et de tous ses sous-dossiers. L’état réel de chaque FileInfo peut changer dans le temps entre le début et la fin de l’exécution d’une requête. Par exemple, vous pouvez créer une liste d’objets FileInfo à utiliser comme source de données. Si vous essayez d’accéder à la propriété Length dans une requête, l’objet FileInfo tente d’accéder au système de fichiers pour mettre à jour la valeur de Length. Si le fichier n’existe plus, vous obtenez une exception FileNotFoundException dans votre requête, même si vous n’interrogez pas directement le système de fichiers. Certaines requêtes de cette section utilisent une méthode distincte qui consomme ces exceptions particulières dans certains cas. Une autre option consiste à conserver votre source de données à jour dynamiquement en utilisant FileSystemWatcher.