複数のフィルターを使用して Directory.GetFiles() を呼び出すことはできますか? 質問する

複数のフィルターを使用して Directory.GetFiles() を呼び出すことはできますか? 質問する

メソッドを使用して、やDirectory.GetFiles()などの複数の種類のファイルのリストを取得しようとしています。次の 2 つの方法を試しましたが、うまくいきませんでした。mp3jpg

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

これを 1 回の通話で実行する方法はありますか?

ベストアンサー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指摘していることはどちらも非常に重要です。

おすすめ記事