Example #1
0
        /// <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;
        }
Example #2
0
        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()}");
        }