ホームページ >バックエンド開発 >C++ >Directory.GetFiles() を効率的に使用して複数のファイル タイプを取得するにはどうすればよいですか?

Directory.GetFiles() を効率的に使用して複数のファイル タイプを取得するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2025-01-26 19:11:09814ブラウズ

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

Directory.GetFiles() を使用した複数のファイル タイプの効率的なフェッチ

ディレクトリからさまざまな種類のファイルを効率的に取得する必要がありますか? Directory.GetFiles() は便利なツールですが、複数のファイル拡張子を扱う場合には制限があります。 「|」使用時または ";"検索パターンの区切り文字が機能しないため、効果的な回避策があります。

.NET 4.0 以降のソリューション

新しい .NET バージョンで最適なパフォーマンスを得るには、Directory.EnumerateFiles() と LINQ を組み合わせて利用します。

<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>

このアプローチでは、最初にすべてのファイルを反復的に取得し (一度にすべてをロードする場合と比較してパフォーマンスが向上します)、次にラムダ式を使用して結果をフィルタリングして、.mp3.jpg ファイルのみを保持します。

古い .NET バージョンの回避策

古い .NET バージョンを使用している場合は、Directory.GetFiles():

を使用してソリューションを適応させることができます。
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories)
    .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>

これにより、最初にすべてのファイルが読み込まれ、次に同じ LINQ フィルターが適用されます。

重要な注意事項

  • パフォーマンス: Directory.EnumerateFiles() は便利ですが、高度に最適化されたカスタム ソリューションと比較して、非常に大きなディレクトリではパフォーマンスのオーバーヘッドがわずかに発生する可能性があります。 パフォーマンスが重要なアプリケーションの場合は、手動で反復することをお勧めします。
  • パス構文: エラーを避けるために、ディレクトリ パスは常に二重引用符 (「C:path」) で囲みます。

この洗練されたアプローチは、.NET Framework のバージョンに応じて、Directory.GetFiles() またはそのより効率的な対応物である Directory.EnumerateFiles() を使用して複数のファイル タイプを取得するための明確で効率的なソリューションを提供します。

以上がDirectory.GetFiles() を効率的に使用して複数のファイル タイプを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。