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 :

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.

Voir aussi

Concepts

LINQ to Objects