1. ホーム
  2. c#

[解決済み] Directory.GetFiles()を複数のフィルタで呼び出すことはできますか?

2022-03-23 08:26:12

質問

を使おうとしています。 Directory.GetFiles() メソッドを使用して、複数の種類のファイルの一覧を取得することができます。 mp3 'sと jpg 's. の両方を試しましたが、うまくいきません。

Directory.GetFiles("C:\\path", "*.mp3|*.jpg", SearchOption.AllDirectories);
Directory.GetFiles("C:\\path", "*.mp3;*.jpg", SearchOption.AllDirectories);

これを1回の呼び出しで行う方法はありますか?

どのように解決するのですか?

.NET 4.0以降の場合。

var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

.NETの以前のバージョン用。

var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories)
            .Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

を編集します。 コメントをお読みください。という改善 ポール・ファリー が提案するメモリとパフォーマンスの問題、そして クリスチャン.K が指摘するように、どちらも非常に重要です。