c# - 具有多个扩展名的 GetFiles

标签 c# .net fileinfo getfiles

<分区>

Possible Duplicate:
Can you call Directory.GetFiles() with multiple filters?

如何过滤多个扩展?

我试过:

FileInfo[] Files = dinfo.GetFiles("*.jpg;*.tiff;*.bmp");
FileInfo[] Files = dinfo.GetFiles("*.jpg,*.tiff,*.bmp");

最佳答案

为什么不创建一个扩展方法?这更具可读性。

public static IEnumerable<FileInfo> GetFilesByExtensions(this DirectoryInfo dir, params string[] extensions)
{
    if (extensions == null) 
         throw new ArgumentNullException("extensions");
    IEnumerable<FileInfo> files = Enumerable.Empty<FileInfo>();
    foreach(string ext in extensions)
    {
       files = files.Concat(dir.GetFiles(ext));
    }
    return files;
}

编辑:更高效的版本:

public static IEnumerable<FileInfo> GetFilesByExtensions(this DirectoryInfo dir, params string[] extensions)
{
    if (extensions == null) 
         throw new ArgumentNullException("extensions");
    IEnumerable<FileInfo> files = dir.EnumerateFiles();
    return files.Where(f => extensions.Contains(f.Extension));
}

用法:

DirectoryInfo dInfo = new DirectoryInfo(@"c:\MyDir");
dInfo.GetFilesByExtensions(".jpg",".exe",".gif");

关于c# - 具有多个扩展名的 GetFiles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527203/

相关文章:

c# - 如何使用 Linq 和 XML 实现通用方法方法

android - 文件从 SD 卡中消失

c++ - 在 C++ 中获取 mp3 长度

c# - 排除子元素

.net - 使用 StructureMap 和 NET MVC 2 的 TryGetInstance 问题

c# - ASP.Net 中的日期差异

c# - 在 C# 中缓存 FileInfo 属性

c# - 适用于 Windows 7 Phone 的 Wintellect PowerCollections?

c# - 如何显示 C# 窗口服务的系统托盘图标?

c# - 单步执行测试时测试成功;否则不