Maison > développement back-end > C++ > Comment puis-je utiliser efficacement Directory.GetFiles() pour récupérer plusieurs types de fichiers ?

Comment puis-je utiliser efficacement Directory.GetFiles() pour récupérer plusieurs types de fichiers ?

Barbara Streisand
Libérer: 2025-01-26 19:11:09
original
814 Les gens l'ont consulté

How Can I Efficiently Use Directory.GetFiles() to Retrieve Multiple File Types?

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>
Copier après la connexion

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>
Copier après la connexion

Cela charge initialement tous les fichiers, puis applique le même filtre LINQ.

Remarques importantes

  • Performances : Bien que pratique, 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.
  • Syntaxe du chemin : Placez toujours le chemin de votre répertoire entre guillemets doubles ("C:path") pour éviter les erreurs.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal