首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用System.IO.Directory获取与多个扩展名中的一个匹配的所有文件

使用System.IO.Directory获取与多个扩展名中的一个匹配的所有文件
EN

Stack Overflow用户
提问于 2014-02-13 10:48:14
回答 2查看 2K关注 0票数 0

我试图从一个目录中获取其中一个扩展名:.aif、.wav、.mp3或.ogg。

我可以以某种方式将这些合并到搜索模式中吗?还是必须在每个扩展名中迭代所有文件一次?

这就是我想要的:

代码语言:javascript
复制
foreach (string filePath in Directory.GetFiles(pathRoot + "/Music/" + path, "*.mp3" || "*.aif" || "*.wav" || "*.ogg"))
{
    //Do stuff
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-13 10:57:41

如果您只需要检查扩展名,那么我可以想到的最简单的解决方案是获取所有文件并将扩展名与列表进行比较:

代码语言:javascript
复制
var extList = new string[] { ".mp3", ".aif", ".wav", ".ogg" };
var files = Directory.GetFiles(pathRoot + "/Music/" + path, "*.*")
                        .Where(n => extList.Contains(System.IO.Path.GetExtension(n), StringComparer.OrdinalIgnoreCase))
                        .ToList();
票数 4
EN

Stack Overflow用户

发布于 2014-02-13 10:57:26

没有搜索多个模式的方法,但可以编写一个:

代码语言:javascript
复制
private string[] GetFiles(string path, params string[] searchPatterns)
{
    var filePaths = new List<string>();

    foreach (var searchPattern in searchPatterns)
    {
        filePaths.AddRange(Directory.GetFiles(path, searchPattern));
    }

    filePaths.Sort();

    return filePaths.ToArray();
}

现在,您可以将其称为最初调用Directory.GetFiles并传递多个模式的地方。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21751991

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档