Récupération efficace de plusieurs types de fichiers à l'aide de Directory.GetFiles()
Besoin de récupérer efficacement des fichiers de différents types à partir d'un répertoire ? Directory.GetFiles()
est un outil pratique, mais il présente des limites lorsqu'il s'agit de gérer plusieurs extensions de fichiers. En utilisant "|" ou ";" comme les délimiteurs dans le modèle de recherche ne fonctionnent pas, il existe des solutions de contournement efficaces.
Solutions pour .NET 4.0 et supérieur
Pour des performances optimales dans les versions .NET plus récentes, tirez parti de Directory.EnumerateFiles()
combiné avec LINQ :
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
Cette approche récupère d'abord tous les fichiers de manière itérative (améliorant les performances par rapport au chargement de tout en une seule fois), puis filtre les résultats à l'aide d'une expression lambda pour conserver uniquement les fichiers .mp3
et .jpg
.
Solution de contournement pour les anciennes versions de .NET
Si vous travaillez avec des anciennes versions de .NET, vous pouvez adapter la solution en utilisant Directory.GetFiles()
:
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
Cela charge initialement tous les fichiers, puis applique le même filtre LINQ.
Remarques importantes
Directory.EnumerateFiles()
peut introduire une légère surcharge de performances dans des répertoires extrêmement volumineux par rapport à une solution personnalisée hautement optimisée. Pour les applications critiques en termes de performances, une itération manuelle peut être préférable.Cette approche raffinée fournit une solution claire et efficace pour récupérer plusieurs types de fichiers à l'aide de Directory.GetFiles()
ou de son homologue plus efficace, Directory.EnumerateFiles()
, en fonction de votre version de .NET framework.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!