您的位置:首页 > 其它

使用多个搜索字符串获取指定目录中的文件

2013-03-21 23:25 489 查看
这两天在乱写一个小程序,其中一个功能要获取指定目录中的文件.
这个功能大家一看想必就知道怎么写了. Directory.GetFiles 方法嘛

名称说明
Directory.GetFiles (String)返回指定目录中的文件的名称。由 .NET Compact Framework 支持。
Directory.GetFiles (String, String)返回指定目录中与指定搜索模式匹配的文件的名称。由 .NET Compact Framework 支持。
Directory.GetFiles (String, String, SearchOption)返回指定目录中文件的名称,该目录与指定搜索模式匹配并使用某个值确定是否在子目录中搜索。
之前没了解或不熟悉的猿儿们自己再去MSDN资源库复习一遍吧.
现在又有了新的需求.RT. 我想通过多个搜索字符串筛选文件. 举例: 我想同时筛选mp3和jpg的图片.要怎么办呢?

刚开始我想到的是 声明一个搜索字符串集合,循环此集合,根据搜索字符串筛选添加. 示例代码:

const string strFolderPath = "D:\\fuckgfw";
var lstFiles = new List<string>();
var lstFilters = new List<string>{ "*.mp3", "*.jpg" };
foreach (var filter in lstFilters){ lstFiles.AddRange(Directory.GetFiles(strFolderPath, filter)); }


接着又想到的是 声明一个扩展名集合,循环获取指定目录所有文件.

判断扩展名集合是否包含文件扩展名匹配筛选. 示例代码:

var lstExtensions = new List<string>{ ".mp3", ".jpg" };
var lstFiles = Directory.GetFiles(strFolderPath).Where(file => lstExtensions.Contains(Path.GetExtension(file))).ToList();


后来又google了下.搜到了在stackoverflow上一个人的提问.

看了下提问日期:2008-10-02. 心里那个汗啊...大多数人赞同的结果是:

var files = Directory.GetFiles("C:\\path", "*.*", SearchOption.AllDirectories).Where(s => s.EndsWith(".mp3") || s.EndsWith(".jpg"));


由于大小写的问题,下面有人补充. 转小写或者忽略大小写...

s.ToLower().Endswith... 或者 s.EndsWith(".mp3", StringComparison.OrdinalIgnoreCase)


原文链接:Can you call Directory.GetFiles() with multiple filters?

以上代码均未编译测试....

另说这个标题命名让我十分纠结,现在这个读起来感觉想当别扭..又没想到可读性强的.暂定吧

欢迎指出错误,交流学习.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐