ホームページ >バックエンド開発 >C++ >Directory.GetFiles() は複数のファイル タイプ フィルターを処理できますか?

Directory.GetFiles() は複数のファイル タイプ フィルターを処理できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-26 19:26:09944ブラウズ

Can Directory.GetFiles() Handle Multiple File Type Filters?

directory.getFiles()

を使用して複数のファイルタイプフィルターを使用しています

課題:

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 サイトの他の関連記事を参照してください。

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