//------------------------------------------------------------------ void AddFileToList(FileInfo fi, int level) { FileInfoExt fiExt = new FileInfoExt(); fiExt.fi = fi; fiExt.level = level; totalFiles[0]++; totalFiles[level]++; totalFileSize[0] += fi.Length; totalFileSize[level] += fi.Length; fileQueue.Add(fiExt); }
//------------------------------------------------------------------ // Рекурсивная функция поиска файлов по указанным настройками поиска public void WalkDirectoryTree(System.IO.DirectoryInfo root) { System.IO.FileInfo[] files = null; System.IO.DirectoryInfo[] subDirs = null; try { files = root.GetFiles(); } catch (UnauthorizedAccessException e) { //log.Add(e.Message); } catch (System.IO.DirectoryNotFoundException e) { Console.WriteLine(e.Message); } if (files != null) { foreach (System.IO.FileInfo fi in files) { // предварительная проверка расширения FileInfoExt fiExt = new FileInfoExt(fi); if ((fiExt.IsFileImage() == false) && (fiExt.IsFileVideo() == false)) { continue; } // предварительная проверка размера if (fi.Length < 30_000 || fi.Length > 4_000_000_000) { continue; } if (fiExt.level > 0) { AddFileToList(fi, level); } } // Now find all the subdirectories under this directory. subDirs = root.GetDirectories(); foreach (System.IO.DirectoryInfo dirInfo in subDirs) { // Глобально исключаем папки // Windows "Program Files" "Program Files (x86)" ProgramData // эти папки уже наверное поштучно будем исключать AppData Downloads Загрузки if (dirInfo.Name == "Windows" || dirInfo.Name == "Program Files" || dirInfo.Name == "Program Files (x86)" || dirInfo.Name == "ProgramData" || dirInfo.Name == "AppData" // || // // dirInfo.Name == "Adult" ) { continue; } WalkDirectoryTree(dirInfo); } } }