LINQ et répertoires de fichiers
Les principales opérations du système de fichiers sont des requêtes. Elles sont par conséquent bien adaptées à l'approche LINQ.
Notes
Si vous souhaitez effectuer des requêtes de programmation sur le contenu de plusieurs types de fichiers et de documents, vous pouvez utiliser le moteur de recherche Windows Desktop Search (en anglais). Bien qu'il ne puisse pas être interrogé actuellement avec LINQ, il fournit un service d'indexation puissant qui gère efficacement les complexités du système de fichiers.
Notez que les requêtes de cette section sont non destructives. Elles ne sont pas utilisées pour modifier le contenu des fichiers ou dossiers d'origine, conformément à la règle qui spécifie que les requêtes ne doivent pas avoir d'effets secondaires. En général, tout code (y compris les requêtes qui effectuent des opérateurs de création, de mise à jour et de suppression) qui modifie les données sources doit être mis à l'écart du code qui interroge uniquement les données.
Cette section traite des rubriques suivantes :
Comment : interroger des fichiers possédant un attribut ou un nom donné
Montre comment rechercher des fichiers en examinant une ou plusieurs propriétés de l'objet FileInfo.Comment : regrouper des fichiers par extension (LINQ)
Montre comment retourner des groupes d'objets FileInfo en fonction de leur extension de nom de fichier.Comment : rechercher le nombre total d'octets dans un ensemble de dossiers (LINQ)
Montre comment retourner le nombre total d'octets de tous les fichiers d'une arborescence spécifiée.Comment : comparer le contenu de deux dossiers (LINQ)
Montre comment retourner tous les fichiers qui sont présents dans deux dossiers spécifiés, et également tous les fichiers qui sont présents dans un dossier mais pas dans l'autre.Comment : interroger les fichiers les plus volumineux dans une arborescence de répertoires (LINQ)
Montre comment retourner le fichier le plus grand ou le plus petit, ou un nombre spécifié de fichiers, dans une arborescence.Comment : interroger des fichiers dupliqués dans une arborescence de répertoires (LINQ)
Montre comment regrouper dans une arborescence spécifiée tous les noms de fichier qui sont présents à plusieurs emplacements. Montre également comment effectuer des comparaisons plus complexes à partir d'un comparateur personnalisé.Comment : interroger le contenu de fichiers dans un dossier (LINQ)
Montre comment itérer au sein des dossiers d'une arborescence, ouvrir chaque fichier et interroger le contenu du fichier.
Commentaires
Un certain degré de complexité subsiste lors de la création d'une source de données qui représente précisément le contenu du système de fichiers et qui gère des exceptions sans difficultés. Les exemples de cette section créent une collection instantanée 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 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 essaiera d'accéder au système de fichiers pour mettre à jour la valeur de Length. Si le fichier n'existe plus, vous obtiendrez un FileNotFoundException dans votre requête bien que vous n'interrogiez pas le système de fichiers directement. Certaines requêtes de cette section utilisent une méthode distincte qui utilise ces exceptions particulières dans certains cas. Une autre possibilité consiste à tenir votre source de données à jour dynamiquement en utilisant le FileSystemWatcher.