複数の種類のファイルを効率的に取得する
Directory.GetFiles()
メソッドは簡単そうに見えますが、複数のファイル タイプのフィルターを直接サポートしていません。 ただし、この制限を克服するための効果的な戦略がいくつか存在します。
.NET 4.0 以降のバージョンの場合、EnumerateFiles()
メソッドは、LINQ の Where()
句を使用した優れたソリューションを提供します。
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
これにより、指定された拡張子に基づいて列挙されたファイルがエレガントにフィルタリングされます。
古い .NET バージョンの場合は、同等のアプローチが可能です。
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
ただし、GetFiles()
はメモリ内の完全な配列を返すことを覚えておくことが重要です。 これは、特に大規模なディレクトリを処理する場合に、パフォーマンスの問題やメモリ消費量の増加につながる可能性があります。 したがって、効率を最適化するには、EnumerateFiles()
を使用することを強くお勧めします。
以上がdirectory.getFiles()またはenumerateFiles()を使用して複数のファイルタイプを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。