Maison >développement back-end >C++ >Comment puis-je récupérer des fichiers avec plusieurs filtres à l'aide de Directory.getFiles ()?
Récupération efficace de plusieurs types de fichiers avec Directory.getFiles ()
La méthode Directory.GetFiles()
est un outil pratique pour inscrire des fichiers dans un répertoire. Cependant, son filtrage intégré ne permet qu'un seul type de fichier à la fois. Cet article explore des solutions pour surmonter cette limitation et récupérer des fichiers correspondant à plusieurs critères en une seule opération.
Le défi: filtrage de type de fichiers multiples
Utilisation directement de Directory.GetFiles()
pour récupérer des fichiers avec plusieurs extensions (par exemple, .mp3 et .jpg) n'est pas possible sans solution de contournement.
Solutions:
Deux méthodes efficaces contournent cette limitation:
1. Tiration de Directory.EnumerateFiles()
(.net 4.0 et ultérieure):
Directory.EnumerateFiles()
offre une approche plus économe en mémoire, en particulier lors de la gestion de nombreux fichiers. Il itère via des fichiers sans les charger tous en mémoire à la fois. Vous pouvez ensuite filtrer les résultats à l'aide de linq:
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); </code>
Cet extrait de code récupère tous les fichiers dans "C: Path" (et ses sous-répertoires) et filtre les résultats pour inclure uniquement les fichiers .mp3 et .jpg.
2. Filtrage personnalisé avec Directory.GetFiles()
:
Pour les versions ou situations .NET plus anciennes où EnumerateFiles()
n'est pas idéal, vous pouvez utiliser GetFiles()
avec un filtre personnalisé appliqué par la suite:
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
Cela obtient le même résultat que la méthode précédente mais charge tous les fichiers dans la mémoire initialement.
Considérations de performance:
Alors que les deux méthodes atteignent le résultat souhaité, Directory.EnumerateFiles()
est généralement préféré pour son efficacité de la mémoire, en particulier lorsqu'il s'agit de grands répertoires. Directory.GetFiles()
peut être plus rapide pour les répertoires plus petits, mais les frais généraux de mémoire peuvent devenir significatifs avec de nombreux fichiers. Choisissez la méthode qui équilibre les performances et l'utilisation de la mémoire pour votre application spécifique.
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!