问题描述

我们知道,在.NET/C#的程序开发中,可以通过Directory.GetFiles()方法获取到指定文件夹中所有的文件,同时,我们还可以指定一个需要过滤掉的文件类型的扩展名。但如何通过Directory.GetFiles()这个方法过滤掉多个文件类型的扩展名呢?

比如,我们需要过滤掉文件扩展名为*.mp3|*.jpg这两种文件,如:

Directory.GetFiles("C:\\path", "*.mp3|*.jpg", SearchOption.AllDirectories);

Directory.GetFiles("C:\\path", "*.mp3;*.jpg", SearchOption.AllDirectories);

.NET/C#应用程序开发中使用Directory.GetFiles()过滤多种文件扩展名类型有哪些方法呢?

方案一

在.NET 4.0 或者以上版本中,我们可以使用Directory.EnumerateFiles()方法来过滤多种文件类型,如下:

var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)

.Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

在.NET4.0 以前的版本中,我们可以使用如下方式:

var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories)

.Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));

方案二

我们也可以借助LINQ的SelectMany()方法来实现,如:

private static string[] GetFiles(string sourceFolder, string filters, System.IO.SearchOption searchOption)

{

return filters.Split('|').SelectMany(filter => System.IO.Directory.GetFiles(sourceFolder, filter, searchOption)).ToArray();

}

方案三

我们也可以使用正则表达式来处理,如下:

var files = Directory.GetFiles("path_to_files").Where(file => Regex.IsMatch(file, @"^.+\.(wav|mp3|txt)$"));

方案四

或者使用如下的Contains()方法,如:

var set = new HashSet { ".mp3", ".jpg" };

Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)

.Where(f => set.Contains(

new FileInfo(f).Extension,

StringComparer.OrdinalIgnoreCase));

或者

from file in Directory.GetFiles(path, "*.*", SearchOption.AllDirectories)

from ext in set

where String.Equals(ext, new FileInfo(file).Extension, StringComparison.OrdinalIgnoreCase)

select file;

c#file过滤多种格式_[C#].NET/C#应用程序开发中使用Directory.GetFiles()过滤多种文件扩展名类型有哪些方法?...相关推荐

  1. dreamweaver后缀名_在 Dreamweaver 中添加或编辑识别的文件扩展名

    如果您要对 Dreamweaver 中的以下问题进行故障诊断,请阅读本文: 打开文件时,出现此错误消息:"找不到此文件扩展名的有效编辑器." 代码视图中的颜色编码与所需文件类型的颜 ...

  2. linux 3gpp格式转换器,3GPP 文件扩展名: 它是什么以及如何打开它?

    3GPP 文件疑难解答 典型的 3GPP 开放挑战 VLC Media Player 消失 你尝试加载 3GPP 文件并收到错误,例如 "%%os%% 无法打开 3GPP 文件扩展名&quo ...

  3. ajax传输文件大小有没有限制_巧改文件扩展名,1秒解除微信传输文件大小限制!...

    点击上方[word精品教程]-右上角[...]-[设为星标⭐] 即可第一时间获取最新办公资讯 作者:网黑哥   来源:网罗灯下黑(ID:wldxh8) 在微信电脑端发送一些可以直接播放的视频时,往往会 ...

  4. python程序开发_用python进行桌面程序开发

    Python是一种面向对象.直译式计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定.这种语言具有非常简捷而清晰的语法特点,适合完成各种高层任务,几乎可以在所 ...

  5. java 获取文件扩展名_如何在Java中获取文件扩展名

    java 获取文件扩展名 Sometimes while working with files, we need to process them differently based on their ...

  6. 已解决Excel无法打开文件test.xIsx“,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配。

    已解决Excel无法打开文件test.xIsx",因为文件格式或文件扩展名无效.请确定文件未损坏,并且文件扩展名与文件的格式匹配. 文章目录 报错代码 报错原因 解决方法 帮忙解决 报错代码 ...

  7. Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配...

    office版本:2016  系统版本:win10 问题描述:  1.桌面新建excel表格后,打开时,提示"Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效.请确定文件 ...

  8. java文件后缀_关于java文件扩展名认识

    ☆ 写在前面 一名新手在历经千辛万苦写好Java程序,怀揣激动的心情去编译和执行java程序时,结果出现错误,什么找不到文件,什么不存在,找不到main方法等等.我在这里就文件后扩展名,也叫文件后缀名 ...

  9. Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏,并且文件扩展名与文件的格式匹配

    office版本:2016 系统版本:win10 问题描述: 1.桌面新建excel表格后,打开时,提示"Excel无法打开文件xxx.xlsx,因为文件格式或文件扩展名无效.请确定文件未损 ...

  10. 打开excel显示php拓展名,phpexcel 导出excel 因为文件格式或文件扩展名无效,请确定文件未损坏,并且文件扩展名与文件的格式匹配...

    phpexcel导出excel:打开出现这个错误,强制打开是乱码 $objPHPExcel =newPHPExcel(); $filename ="test.xls"; heade ...

最新文章

  1. 一个云本地文件包含漏洞,影响世界一流公司
  2. [WEB API] CLIENT 指定请求及回应格式(XML/JSON)
  3. kafka是什么_终于知道Kafka为什么这么快了!
  4. 50张非常精美的Apple主题桌面壁纸(上篇)
  5. 混合背包(信息学奥数一本通-T1270)
  6. MongoDB学习笔记lt;七gt;
  7. python调试教程_python进阶教程之==、is和调试
  8. Jquery打造AdRotator轮转图片
  9. 配置generatorConfig.xml自动生成的代码的sql书写问题
  10. MyBatis源码阅读(六) ---mapper方法具体执行流程分析
  11. 组建局域网_组网方案图文教程,双路由器有线搭建网络,公司家庭组建局域网...
  12. 模拟微博登陆,获取微博cookie
  13. mysql如何上传音频文件_如何上传本地音乐获取MP3外链(欢迎分享和转载)
  14. FineBI 的关联视图及多表关联 自助数据集
  15. C#实现多人语音聊天
  16. 广西事业单位考试 计算机基础知识,2018年广西壮族自治区事业单位考试《公共基础知识》1000题【必考题库】.pdf...
  17. 学习java数组的练习代码
  18. 美国NBC电视台社论 中文版
  19. 招聘网站数百万条敏感数据泄露,简历、身份证扫描件统统曝光
  20. 对象存储COS-数据处理能力升级!“组合拳”助力存储新时代!

热门文章

  1. ajax跨域访问问题
  2. 安装Office SharePoint Server 2010实战
  3. 3月7日 当前动力电池竞争格局
  4. 数据--第38课 - 霍夫曼树
  5. MySQL查询语句格式总结
  6. 使用Zephir来快速编写高性能PHP二进制拓展
  7. MySQL设置字符编码
  8. 50个技巧提高你的PHP网站程序执行效率
  9. 快递如何筹备双十一:德邦快递另类营销
  10. [原创]mac终端前面的计算机名怎么改??