在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
如果你仍然需要它在数组中,你可以这样做:
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();