首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用于System.IO.Directory.GetFiles的多个文件扩展名searchPattern

用于System.IO.Directory.GetFiles的多个文件扩展名searchPattern
EN

Stack Overflow用户
提问于 2011-08-12 19:42:22
回答 21查看 219.1K关注 0票数 157

Directory.GetFiles()上将多个文件扩展名设置为searchPattern的语法是什么?例如,过滤掉扩展名为.aspx和.ascx的文件。

代码语言:javascript
复制
// TODO: Set the string 'searchPattern' to only get files with
// the extension '.aspx' and '.ascx'.
var filteredFiles = Directory.GetFiles(path, searchPattern);

更新LINQ不是一个选项,它必须是传递到GetFiles中的searchPattern,正如问题中所指定的。

EN

回答 21

Stack Overflow用户

回答已采纳

发布于 2011-08-12 19:47:40

我相信没有“开箱即用”的解决方案,这是Directory.GetFiles方法的局限性。

不过,编写自己的方法相当容易,下面是一个example

代码可能是:

/返回给定文件夹中符合给定筛选器的文件名/包含要检索的文件的文件夹/多个用| character / File.IO.SearchOption分隔的文件筛选器,/可以是AllDirectories或TopDirectoryOnly / FileInfo对象的数组,这些对象呈现满足给定筛选器公共string[] getFiles(string SourceFolder,string Filter,System.IO.SearchOption searchOption) /的文件名集合。{ // ArrayList将保存所有文件名ArrayList alFiles =string[] ArrayList();//创建筛选器字符串数组string[] MultipleFilters = Filter.Split('|');//对于每个筛选器,查找匹配文件名alFiles.AddRange(Directory.GetFiles(SourceFolder,(MultipleFilters中的string FileFilter ){ //将找到的文件名添加到数组列表alFiles.AddRange(Directory.GetFiles(SourceFolder,FileFilter,FileFilter));} //返回相关文件名的字符串数组string[](string[])alFiles.ToArray(alFiles.ToArray (string ));}

票数 45
EN

Stack Overflow用户

发布于 2011-08-12 19:47:32

代码语言:javascript
复制
var filteredFiles = Directory
    .GetFiles(path, "*.*")
    .Where(file => file.ToLower().EndsWith("aspx") || file.ToLower().EndsWith("ascx"))
    .ToList();

编辑2014-07-23

您可以在.NET 4.5中执行此操作以获得更快的枚举速度:

代码语言:javascript
复制
var filteredFiles = Directory
    .EnumerateFiles(path) //<--- .NET 4.5
    .Where(file => file.ToLower().EndsWith("aspx") || file.ToLower().EndsWith("ascx"))
    .ToList();

Directory.EnumerateFiles in MSDN

票数 197
EN

Stack Overflow用户

发布于 2015-05-07 00:23:11

我喜欢这种方法,因为它是可读性的,并且避免了目录的多次迭代:

代码语言:javascript
复制
var allowedExtensions = new [] {".doc", ".docx", ".pdf", ".ppt", ".pptx", ".xls", ".xslx"}; 
var files = Directory
    .GetFiles(folder)
    .Where(file => allowedExtensions.Any(file.ToLower().EndsWith))
    .ToList();
票数 42
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7039580

复制
相关文章

相似问题

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