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()
は便利ですが、高度に最適化されたカスタム ソリューションと比較して、非常に大きなディレクトリではパフォーマンスのオーバーヘッドがわずかに発生する可能性があります。 パフォーマンスが重要なアプリケーションの場合は、手動で反復することをお勧めします。この洗練されたアプローチは、.NET Framework のバージョンに応じて、Directory.GetFiles()
またはそのより効率的な対応物である Directory.EnumerateFiles()
を使用して複数のファイル タイプを取得するための明確で効率的なソリューションを提供します。
以上がDirectory.GetFiles() を効率的に使用して複数のファイル タイプを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。