DirectoryInfo.GetFiles
C# の関数を使用して *.gif と *.jpg の両方のファイル タイプを見つけるにはどうすればよいですか?
このコードを試すと:
string pattern = "*.gif|*.jpg";
FileInfo[] files = dir.GetFiles(pattern);
例外「パスに不正な文字があります。」投げられます。
これらを1つの文字列パターンに結合する方法はありません。パターンをリストに保存する必要があります。
var extensions = new[] { "*.gif", "*.jpg" };
var files = extensions.SelectMany(ext => dir.GetFiles(ext));
あなたはそれをすることはできません。それぞれの方法を使用する必要がありGetFiles()
ます。または、拡張機能に配列を使用して、それぞれをチェックすることもできますが、それでもこのメソッドが複数回必要になります。
これらの質問をチェックしてください。
クエリで複数のパターンを指定することはできません。拡張機能のリストをGetFiles
用意して、それぞれに対して呼び出す必要があります。例えば...
var exts = new string[] { "*.gif", "*.jpg" };
foreach (var ext in exts) {
var files = dir.GetFiles(ext);
}
の完全なワイルドカードを使用し*.*
てすべてのファイルを一度に取得し、それらを手動でフィルタリングすることもできますが、ディレクトリとその内容によっては、このパフォーマンスが問題になる可能性があります。
次のコードの where 句に必要なだけ拡張子を追加できます。
DirectoryInfo directoryInfo = new DirectoryInfo(filePath);
FileInfo[] files = directoryInfo.GetFiles().Where(f => f.Extension == ".gif" || f.Extension == ".jpg").ToArray();