GetFiles使用路径和模式而忽略C#中的某个文件名

时间:2011-10-09 15:23:36

标签: c#

我想在某个路径中获取所有.cs文件。我正在使用

这样做
string [] files = Directory.GetFiles(path, pattern);

其中path是有效的文件夹路径,模式是* .cs。但是这也会返回AssemblyInfo.cs,我不希望包含该文件,尽管它与模式匹配。我想忽略所有名为AssemblyInfo.cs

的文件

4 个答案:

答案 0 :(得分:4)

如果您仍然需要它在阵列中,您可以执行以下操作:

string[] files = Directory.GetFiles(path, pattern).Where(filename => !filename.EndsWith("AssemblyInfo.cs")).ToArray();

如果您不需要它作为一个数组,那么您可以取消对.ToArray()的调用,这将返回IEnumerable<string>

如果您使用的是不支持Linq的.NET版本(即3.5之前的版本),那么您可以在迭代数组时跳过这些部分,如下所示:

string[] files = Directory.GetFiles(path, pattern);
foreach (string filename in files)
{
    if (filename.EndsWith("AssemblyInfo.cs"))
    {
        continue;
    }
}

答案 1 :(得分:3)

最简单的方法是:

string[] files = Directory.GetFiles(path, pattern).ToList().RemoveAll(f => f.IndexOf("AssemblyInfo.cs", StringComparison.CurrentCultureIgnoreCase) >= 0).ToArray();

答案 2 :(得分:2)

有几个选项可以做到这一点,例如

string[] files = (from x in Directory.GetFiles(path, pattern) where !x.EndsWith ("AssemblyInfo.cs") select x).ToArray();

答案 3 :(得分:2)

假设您使用的是.NET 3.5或更高版本:

string [] files = Directory.GetFiles(path, pattern).Where(o => Path.GetFileName(o).ToLower() != "assemblyinfo.cs").ToArray();