8

DirectoryInfo.GetFilesC# の関数を使用して *.gif と *.jpg の両方のファイル タイプを見つけるにはどうすればよいですか?

このコードを試すと:

string pattern = "*.gif|*.jpg";
FileInfo[] files = dir.GetFiles(pattern);

例外「パスに不正な文字があります。」投げられます。

4

4 に答える 4

13

これらを1つの文字列パターンに結合する方法はありません。パターンをリストに保存する必要があります。

var extensions = new[] { "*.gif", "*.jpg" };
var files = extensions.SelectMany(ext => dir.GetFiles(ext));
于 2013-02-19T15:50:10.160 に答える
3

あなたはそれをすることはできません。それぞれの方法を使用する必要がありGetFiles()ます。または、拡張機能に配列を使用して、それぞれをチェックすることもできますが、それでもこのメソッドが複数回必要になります。

これらの質問をチェックしてください。

于 2013-02-19T15:48:53.750 に答える
1

クエリで複数のパターンを指定することはできません。拡張機能のリストをGetFiles用意して、それぞれに対して呼び出す必要があります。例えば...

var exts = new string[] { "*.gif", "*.jpg" };
foreach (var ext in exts) {
  var files = dir.GetFiles(ext);
}

の完全なワイルドカードを使用し*.*てすべてのファイルを一度に取得し、それらを手動でフィルタリングすることもできますが、ディレクトリとその内容によっては、このパフォーマンスが問題になる可能性があります。

于 2013-02-19T15:45:40.007 に答える
0

次のコードの where 句に必要なだけ拡張子を追加できます。

DirectoryInfo directoryInfo = new DirectoryInfo(filePath);
FileInfo[] files = directoryInfo.GetFiles().Where(f => f.Extension == ".gif" || f.Extension == ".jpg").ToArray();
于 2017-01-03T09:57:46.623 に答える