在目录中搜索.NET中几种类型的所有文件

时间:2013-01-11 15:08:35

标签: c# .net .net-2.0

假设我有一个像“ .vcproj; .csproj; * .sln”这样的字符串,我想在目录中显示这些类型的所有文件... Windows一直这样做打开文件对话框。

我知道Directory.GetFiles但它只允许我运行一个给定的搜索模式,所以我必须拆分我的输入,然后遍历每个。

在所有打开文件对话框完成后,是否没有内置功能来执行此操作?

.NET 2所以没有LINQ聪明可用!

2 个答案:

答案 0 :(得分:5)

尝试这种方式:

string[] formats = {".jpg", ".png", ".txt"};
var files = Directory.GetFiles("C:\\");
var neededFiles = files.
    Where(file => formats.Any(file.EndsWith)).
    ToArray();

或者,对于.NET 2.0:

var desiredFiles = new List<string>(files.Length);
foreach (var file in files)
{
    foreach (var format in formats)
        if (file.EndsWith(format))
        {
            desiredFiles.Add(file);
            break;
        }
}

答案 1 :(得分:0)

你可以使用垂直管道'|'为RegEx Alternation。我认为您的最终代码应该类似于:

string input_files = ".vcproj;.csproj;*.sln";
string search_for = input_files.Replace(".","\.").Replace(";","|")

Directory.GetFiles("/path/to/directory",search_for)

我从未在.NET中进行任何编码,所以如果我的语法关闭,我会道歉。如果您的初始搜索字符串以有效的正则表达式形式开始,显然可以节省一些时间。