DirectoryInfo.GetFiles,如何在C#中获取不同类型的文件
如何在C#中使用DirectoryInfo.GetFiles
函数找到文件类型* .gif和* .jpg?
当我尝试这段代码时:
string pattern = "*.gif|*.jpg"; FileInfo[] files = dir.GetFiles(pattern);
例外“路径中的非法字符”。 被抛出。
你不能这样做。 您需要使用GetFiles()
方法中的每一个。 或者您可以使用数组作为扩展,然后检查它们中的每一个,但是您仍然需要多次使用此方法。
看看这些问题;
- 具有多个扩展名的GetFiles
- 你能用多个filter调用Directory.GetFiles()吗?
这是无法组合成一个字符串模式,您必须将模式存储在列表中:
var extensions = new[] { "*.gif", "*.jpg" }; var files = extensions.SelectMany(ext => dir.GetFiles(ext));
您不能在查询中指定多个模式,您需要有一个扩展列表并为每个模式调用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();