private IEnumerable <string> EnumerateFilesInFolder(string targetDirectory) { var fileEntries = Directory.GetFiles(targetDirectory); foreach (var file in fileEntries) { FileFinded?.Invoke(); if (_filterPattern.Invoke(file)) { FilteredFileFinded?.Invoke(); } yield return(file); } var subdirectoryEntries = Directory.GetDirectories(targetDirectory); foreach (string subdirectory in subdirectoryEntries) { DirectoryFinded?.Invoke(); if (_filterPattern.Invoke(subdirectory)) { FilteredDirectoryFinded?.Invoke(); } foreach (var file in EnumerateFilesInFolder(subdirectory) .TakeWhile(file => !_cancelTokenSource.IsCancellationRequested) .ToList()) { yield return(file); } } }
public void OnFileFound(string fullFileName) { FileFinded?.Invoke(this, new FoundFileEventArgs() { FullFileName = fullFileName }); }
//перебирает файлы private IEnumerable <CatalogItem> FindFiles(FileInfo[] files) { foreach (var file in files) { //если алгоритм фильтрации задан if (MyFilter != null) { if (MyFilter(file)) { fileArgs.Extention = file.Extension; FilteredFileFinded?.Invoke(this, fileArgs); yield return(new CatalogItem { Name = file.Name, NestingLevel = nestingLevel, Item = CatalogItems.File }); } } else { fileArgs.Extention = file.Extension; FileFinded?.Invoke(this, fileArgs); yield return(new CatalogItem { Name = file.Name, NestingLevel = nestingLevel, Item = CatalogItems.File }); } } }
private IEnumerable <FileSystemInfo> ScanDir(DirectoryInfo dir, int level) { if (_breakNexStep) { yield break; } DirectoryFinded?.Invoke(dir, _logService); yield return(dir); FileInfo[] files = _workTree.GetFiles(dir); foreach (FileInfo f in files) { if (_breakNexStep) { yield break; } FileFinded?.Invoke(f, _logService); yield return(f); } DirectoryInfo[] subDirs = _workTree.GetDirectories(dir); foreach (DirectoryInfo d in subDirs) { foreach (var s in ScanDir(d, ++level)) { yield return(s); } } }
private DirectoryEntityCollection GetFiles(string path) { var result = new DirectoryEntityCollection(); result.Files = _systemEntityService.GetFiles(path); var directories = _systemEntityService.GetDirectories(path); var subFolders = new List <DirectoryEntityCollection>(); if (directories.Length > 0) { foreach (var item in directories) { subFolders.Add(GetFiles(item)); } } result.SubEntities = subFolders.ToArray(); FileFinded?.Invoke(ref args); if (args.RemoveDirectories.Any()) { result.RemoveFolder(args.RemoveDirectories); } if (args.RemoveFiles.Any()) { result.RemoveFiles(args.RemoveFiles); } if (args.StopSearching) { return(result); } return(result); }
protected virtual void OnFileFinded(FileInfo fileInfo, bool isFiltered = false) { var arg = new ItemFindedArg <FileSystemInfo>(fileInfo); _argList.Add(arg); if (isFiltered) { FilteredFileFinded?.Invoke(this, arg); } else { FileFinded?.Invoke(this, arg); } }
public IEnumerable <FileSystemInfo> GetAll(string rootPath) { if (rootPath == null || !Directory.Exists(rootPath)) { throw new ArgumentException(nameof(rootPath)); } Start?.Invoke(); try { foreach (var item in GetSystemElements(rootPath)) { if (_predicate?.Invoke(item) ?? false) { yield return(item); yield break; } if (item is DirectoryInfo) { DirectoryFinded?.Invoke(this, new FileSystemVisitorEventArgs() { Name = item.Name, FullPath = item.FullName }); } else { FileFinded?.Invoke(this, new FileSystemVisitorEventArgs() { Name = item.Name, FullPath = item.FullName }); } yield return(item); } } finally { Stop?.Invoke(); } }
protected virtual void OnFileFinded(FileSystemEventArgs args) { FileFinded?.Invoke(this, args); }
private void TraverseTree(IDirectoryInfo directory) { Stack <IDirectoryInfo> dirs = new Stack <IDirectoryInfo>(); if (!directory.Exists) { throw new ArgumentException(); } else { _subDirsAll.Add(directory); dirs.Push(directory); DirectoryFinded?.Invoke(directory.FullName); } while (dirs.Count > 0) { IDirectoryInfo currentDir = dirs.Pop(); IDirectoryInfo[] subDirs; try { subDirs = currentDir.GetDirectories(); foreach (IDirectoryInfo dir in subDirs) { _subDirsAll.Add(dir); dirs.Push(dir); if (DirectoryFinded != null && DirectoryFinded.Invoke(dir.FullName)) { return; } } } catch (UnauthorizedAccessException e) { Console.WriteLine(e.Message); continue; } catch (DirectoryNotFoundException e) { Console.WriteLine(e.Message); continue; } FileInfo[] files = null; try { files = currentDir.GetFiles(); } catch (UnauthorizedAccessException e) { Console.WriteLine(e.Message); continue; } catch (DirectoryNotFoundException e) { Console.WriteLine(e.Message); continue; } foreach (FileInfo file in files) { _files.Add(file); if (FileFinded != null && FileFinded.Invoke(file.FullName)) { return; } } } }
protected virtual void OnFileFinded(string path) //запуск события до фильтрации { FileFinded?.Invoke(path); Console.WriteLine(path); }
public void OnFileFinded(FileEntryEventArgs eventArgs) => FileFinded?.Invoke(this, eventArgs);