課題:
Directory.GetFiles()
を使用してさまざまなタイプのファイルを取得すると、一般的なプログラミングハードルが表示されます。 メソッド自体は複数のファイルタイプフィルターを直接サポートしていません。
非効率的なアプローチ: このような試みは、目的の結果を生成できません:
<code class="language-csharp">Directory.GetFiles("C:\path", "*.mp3|*.jpg", SearchOption.AllDirectories); Directory.GetFiles("C:\path", "*.mp3;*.jpg", SearchOption.AllDirectories);</code>ソリューション:
.NET 4.0以降の
:エレガントなソリューションのためにLINQをレバレッジ: 古い.NETバージョンの場合:
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>:
同様のLINQベースのアプローチは効果的に機能します: パフォーマンスとメモリに最適化:
<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>:
多数のファイルを扱うと、パフォーマンスとメモリの使用が重要になります。 Christian.Kが指摘したように、
メソッドはメモリ集約型である可能性があります。 より良いメモリ管理には、ポール・ファリーの提案を利用するという提案は、より良いメモリ管理に強くお勧めします:
Directory.GetFiles()
以上がDirectory.GetFiles() は複数のファイル タイプ フィルターを処理できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。