在c#中使用path和pattern来GetFiles,同时忽略某个文件名

本文关键字:文件名 GetFiles path pattern | 更新日期: 2023-09-27 18:10:59

我试图在某个路径中获得所有。cs文件。我使用

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

其中path为有效的文件夹路径,pattern为*.cs。然而,这也返回AssemblyInfo.cs,我不希望该文件被包括,尽管它匹配的模式。我想忽略所有名称为AssemblyInfo.cs

在c#中使用path和pattern来GetFiles,同时忽略某个文件名

的文件

如果你仍然需要它在数组中,你可以这样做:

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;
    }
}

最直接的方式是:

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

有几个选项可以这样做,例如

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

假设您使用的是。net 3.5或更高版本:

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