在C#中,如何搜索文件夹及其子文件夹以查找与字符串值匹配的文件.我的字符串值可能是"ABC123",匹配的文件可能是ABC123_200522.tif.阵列可以收集这些吗?提前致谢.
-Josh
SLa*_*aks 64
你正在寻找Directory.GetFiles
方法:
Directory.GetFiles(path, "*" + search + "*", SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)
如果匹配要求很简单,请尝试:
string[] matchingFiles = System.IO.Directory.GetFiles( path, "*ABC123*" );
Run Code Online (Sandbox Code Playgroud)
如果它们需要更复杂的东西,你可以使用正则表达式(和LINQ):
string[] allFiles = System.IO.Directory.GetFiles( path, "*" );
RegEx rule = new RegEx( "ABC[0-9]{3}" );
string[] matchingFiles = allFiles.Where( fn => rule.Match( fn ).Success )
.ToArray();
Run Code Online (Sandbox Code Playgroud)
DirectoryInfo di = new DirectoryInfo("c:/inetpub/wwwroot/demos");
FileInfo[] rgFiles = di.GetFiles("*.aspx");
Run Code Online (Sandbox Code Playgroud)
您可以为选项传递第二个参数.此外,您可以使用linq进一步过滤结果.
void DirSearch(string sDir)
{
try
{
foreach (string d in Directory.GetDirectories(sDir))
{
foreach (string f in Directory.GetFiles(d, sMatch))
{
lstFilesFound.Add(f);
}
DirSearch(d);
}
}
catch (System.Exception excpt)
{
Console.WriteLine(excpt.Message);
}
}
Run Code Online (Sandbox Code Playgroud)
其中sMatch
是搜索内容的标准。