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

directory.getFiles()を使用して複数のフィルターを使用してファイルを取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-26 19:16:11
オリジナル
581 人が閲覧しました

How Can I Retrieve Files with Multiple Filters Using Directory.GetFiles()?

directory.getfiles()

で複数のファイルタイプを効率的に取得します

Directory.GetFiles()メソッドは、ディレクトリ内のファイルをリストするための便利なツールです。 ただし、組み込みのフィルタリングは、一度に1つのファイルタイプのみを可能にします。 この記事では、この制限を克服し、単一の操作で複数の基準に一致するファイルを取得するためのソリューションを調査します。

課題:複数のファイルタイプフィルタリング

を使用して、複数の拡張機能(.mp3および.jpgなど)を持つファイルを取得して、回避策なしでは不可能です。

Directory.GetFiles()ソリューション:

この制限をバイパスする2つの効果的な方法:

1。レバレッジ

(.NET 4.0以降):

Directory.EnumerateFiles()特に多数のファイルを扱う場合、よりメモリ効率の高いアプローチを提供します。ファイルをすべてメモリにロードすることなく、ファイルを一度にロードすることなく繰り返します。 その後、LINQ:

を使用して結果をフィルタリングできます

このコードスニペットは、すべてのファイルを「C:PATH」(およびそのサブディレクトリ)のすべてのファイルを取得し、.mp3と.jpgファイルのみを含むように結果をフィルタリングします。 Directory.EnumerateFiles()

2。
<code class="language-csharp">var files = Directory.EnumerateFiles("C:\path", "*.*", SearchOption.AllDirectories)
                     .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg")); </code>
ログイン後にコピー

を使用したカスタムフィルタリング

古い.NETバージョンまたはが理想的でない状況の場合、その後カスタムフィルターを適用してDirectory.GetFiles()を使用できます。

これは前の方法と同じ結果を達成しますが、最初にすべてのファイルをメモリにロードします。

EnumerateFiles()パフォーマンスに関する考慮事項:GetFiles()

<code class="language-csharp">var files = Directory.GetFiles("C:\path", "*.*", SearchOption.AllDirectories)
                     .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));</code>
ログイン後にコピー
両方の方法は望ましい結果を達成しますが、特に大規模なディレクトリを扱う場合は、そのメモリ効率に一般的に好まれます。 ディレクトリの小規模の方が

の方が速くなる可能性がありますが、多くのファイルでメモリオーバーヘッドが重要になる可能性があります。 特定のアプリケーションのパフォーマンスとメモリ使用のバランスを最適にする方法を選択してください。

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート