/// <summary> /// 开始执行检索 /// </summary> public void StartSearch(string targetStr, SearchProgressModel searchProgressModel) { Reset(); var mft = new MFTScanner(); SearchProgress = searchProgressModel; List <string> fileFullPaths = new List <string>(); //遍历磁盘,获取文件名 foreach (var item in DriveInfo.GetDrives().Where(drive => drive.DriveType == DriveType.Fixed)) { fileFullPaths.AddRange(mft.EnumerateFiles(item.Name).ToList()); } SearchProgress.TotalFileCount = fileFullPaths.Count; //对全磁盘的文件名称进行关键字搜索(文件名和文件后缀) fileFullPaths = BaseSearcher.SearchFileAndSuffix(targetStr, fileFullPaths); //对余下的内容进行文件内容搜索 Parallel.ForEach(_searchers, search => { search.StartSearch(targetStr, fileFullPaths); }); SearchProgress.SearchedFileCount = SearchProgress.TotalFileCount; }
public void Test1() { var Mft = new MFTScanner(); var sp = new Stopwatch(); sp.Start(); var result = Mft.EnumerateFiles("d:").ToList(); Debug.WriteLine($"iii:{sp.ElapsedMilliseconds.ToString()}"); sp.Restart(); var result1 = Mft.EnumerateFiles("d:", new string[] { ".txt", ".doc", ".docx", ".pdf" }).ToList(); Debug.WriteLine($"iiiee:{sp.ElapsedMilliseconds.ToString()}"); }