如何收集文件夹及其子文件夹中与字符串匹配的所有文件

Jos*_*osh 18 .net c#

在C#中,如何搜索文件夹及其子文件夹以查找与字符串值匹配的文件.我的字符串值可能是"ABC123",匹配的文件可能是ABC123_200522.tif.阵列可以收集这些吗?提前致谢.

-Josh

SLa*_*aks 64

你正在寻找Directory.GetFiles方法:

Directory.GetFiles(path, "*" + search + "*", SearchOption.AllDirectories)
Run Code Online (Sandbox Code Playgroud)


LBu*_*kin 6

如果匹配要求很简单,请尝试:

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)


Mua*_*Dib 5

 DirectoryInfo di = new DirectoryInfo("c:/inetpub/wwwroot/demos");
 FileInfo[] rgFiles = di.GetFiles("*.aspx");
Run Code Online (Sandbox Code Playgroud)

您可以为选项传递第二个参数.此外,您可以使用linq进一步过滤结果.

检查这里的MSDN文档


Gle*_*lar 3

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是搜索内容的标准。

  • SLAks 的答案(如下)实际上更好+更简洁! (6认同)