2011-12-30 61 views

回答

0

我不知道你会怎么办的文件内容的实际正则表达式匹配,但这里是你如何递归浏览文件夹:

public void NavigateFolder(DirectoryInfo d) 
{ 
    foreach (FileInfo f in d.GetFiles()) 
    { 
     //create a streamreader and try to match regex to file contents here 
    } 

    foreach (DirectoryInfo d in d.GetDirectories()) 
    { 
     NavigateFolder(d); 
    } 
} 
0

我不知道任何现成的解决方案的东西。您将不得不递归枚举所有文件,并且对于每个文件,您需要将其内容加载到一个字符串中,并针对该字符串应用正则表达式。

所有文件的特定路径下的递归枚举,我用下面的功能:

public static IEnumerable<Fileinfo> EnumerateMatches(string directory, string filenameonly, 
     bool dirs_only) 
    { 
     DirectoryInfo directory_info = new DirectoryInfo(directory); 
     if(dirs_only) 
     { 
      DirectoryInfo[] infos = directory_info.GetDirectories(filenameonly); 
      foreach(DirectoryInfo info in infos) 
      { 
       string subpathonly = Path.Combine(directory, info.Name); 
       yield return new Fileinfo(info.FullName, true, info.LastWriteTime, 0); 
      } 
     } 
     else 
     { 
      FileInfo[] infos = directory_info.GetFiles(filenameonly); 
      foreach(FileInfo info in infos) 
      { 
       yield return new Fileinfo(info.FullName, false, info.LastWriteTime, info.Length); 
      } 
     } 
    } 
+0

嗨,如果对不起,我不清楚,我想在文件中搜索文本 – Mike 2011-12-30 09:06:15

+0

好吧,我会相应地改变我的答案。 – 2011-12-30 09:13:01