protected override bool Process(IInteraction parameters) { bool success = true; // FileSystemInfo[] infos = rootDirectory.GetFileSystemInfos ("*", SearchOption.AllDirectories); IEnumerable <FileSystemInfo> infos = rootDirectory.EnumerateFileSystemInfos("*", SearchOption.AllDirectories); IEnumerator <FileSystemInfo> infoEnumerator = infos.GetEnumerator(); while (infoEnumerator.MoveNext()) { try { FileSystemInfo info = infoEnumerator.Current; if (info is FileInfo) { success &= FileFound.TryProcess(new FileInteraction(info, this.RootPath, parameters)); } else if (info is DirectoryInfo) { success &= DirectoryFound.TryProcess(new DirectoryInteraction(info, this.RootPath, parameters)); } } catch (Exception ex) { Secretary.Report(5, "Inclusion of new file failed; ", ex.Message); } } return(success); }
protected override bool Process(IInteraction parameters) { string fullPath = ""; bool success = true; while (Changes.Count > 0) { fullPath = Changes.Dequeue(); if (Directory.Exists(fullPath)) { success &= DirectoryFound.TryProcess(new DirectoryInteraction(new DirectoryInfo(fullPath), RootPath, parameters)); } else if (File.Exists(fullPath)) { success &= FileFound.TryProcess(new FileInteraction(new FileInfo(fullPath), RootPath, parameters)); } else { success &= Gone.TryProcess(new FSInteraction(new FileInfo(fullPath), RootPath, parameters)); } } return(success); }
protected virtual void OnDirectoryFound(ContentFindedEventArgs e) { if (ReferenceEquals(e, null)) { throw new ArgumentNullException(); } DirectoryFound?.Invoke(this, e); _searchStopped = e.StopSearch; }
IEnumerable <FileSystemInfo> GetFileSystemInfo(DirectoryInfo directoryInfo) { var allElements = directoryInfo.GetFileSystemInfos(); foreach (var fileSystemInfo in allElements) { var itemFoundEventArgs = new FileSystemInfoEventArgs(fileSystemInfo.FullName); var itemFilteredEventArgs = new FilteredFileSystemInfoEventArgs(fileSystemInfo.FullName); if (fileSystemInfo is FileInfo) { FileFound?.Invoke(this, itemFoundEventArgs); if (itemFoundEventArgs.StopSearch) { yield break; } if (_matchPredicate(fileSystemInfo) && !itemFoundEventArgs.Exclude) { FileFiltered?.Invoke(this, itemFilteredEventArgs); if (itemFilteredEventArgs.StopSearch) { yield break; } if (!itemFilteredEventArgs.Exclude) { yield return(fileSystemInfo); } } } else if (fileSystemInfo is DirectoryInfo nextDirectory) { DirectoryFound?.Invoke(this, itemFoundEventArgs); if (itemFoundEventArgs.StopSearch) { yield break; } if (_matchPredicate(fileSystemInfo) && !itemFoundEventArgs.Exclude) { foreach (var nextFileSystemInfo in GetFileSystemInfo(nextDirectory)) { yield return(nextFileSystemInfo); } DirectoryFiltered?.Invoke(this, itemFilteredEventArgs); if (itemFilteredEventArgs.StopSearch) { yield break; } if (!itemFilteredEventArgs.Exclude) { yield return(fileSystemInfo); } } } } }
private void ProcessFoundEntry(FileSystemInfoBase systemInfoBase) { var isDirectory = systemInfoBase.Attributes.HasFlag(FileAttributes.Directory); if (isDirectory) { DirectoryFound?.Invoke(systemInfoBase, EventArgs.Empty); } else { FileFound?.Invoke(systemInfoBase, EventArgs.Empty); } }
private void OnDirectoryFound(VisitArgs args) { DirectoryFound.Run(this, args); }
private FileSystemInfoCustomCollection <CustomFileItem> GetItemsRecursively(string directoryPath, FilterMask filterMask) { var directoryInfo = (CustomDirectoryInfo)customDirectoryInfoFactory.CreateInstance(directoryPath); var output = new FileSystemInfoCustomCollection <CustomFileItem>(); if (isFirstFilteredFileFound && filterMask.HasFlag(FilterMask.FirstOnly)) { return(output); } if (!filterMask.HasFlag(FilterMask.NoFolders)) { DirectoryFound?.Invoke(this, new ItemFoundArgs { Item = directoryInfo }); if (filterMask.HasFlag(FilterMask.IgnoreFilterFunction) || FileFilterDelegate.Invoke(directoryInfo)) { FilteredDirectoryFound?.Invoke(this, new ItemFoundArgs { Item = directoryInfo }); output.Add(directoryInfo); isFirstFilteredFileFound = true; if (isFirstFilteredFileFound && filterMask.HasFlag(FilterMask.FirstOnly)) { return(output); } } } var files = directoryInfo.GetFiles(); foreach (var file in files) { FileFound?.Invoke(this, new ItemFoundArgs { Item = file }); if (filterMask.HasFlag(FilterMask.IgnoreFilterFunction) || FileFilterDelegate.Invoke(file)) { FilteredFileFound?.Invoke(this, new ItemFoundArgs { Item = file }); output.Add(file); isFirstFilteredFileFound = true; if (isFirstFilteredFileFound && filterMask.HasFlag(FilterMask.FirstOnly)) { return(output); } } } var directories = directoryInfo.GetDirectories(); foreach (var directory in directories) { var result = GetItemsRecursively(directory.FullName, filterMask); foreach (var item in result) { output.Add(item); } } return(output); }
protected virtual void OnRaiseDirectoryFoundEvent(DirectoryEventArgs directoryEventArgs) { DirectoryFound?.Invoke(this, directoryEventArgs); }
/// <summary> /// Executed when a directory is found. /// </summary> /// <param name="directory">The found directory.</param> protected virtual void OnDirectoryFound(string directory) { DirectoryFound?.Invoke(directory); }
protected virtual void OnDirectoryFound(ItemFoundInfoEventArgs e) { DirectoryFound?.Invoke(this, e); }
protected virtual void OnDirectoryFound(SystemVisitorEventArgs e) => DirectoryFound?.Invoke(this, e);
protected void OnDirectoryFound(object sender, DirectoryFoundEventArgs args) { DirectoryFound?.Invoke(sender, args); }
private void OnDirectoryFound(PathEventArgs args) { DirectoryFound?.Invoke(this, args); }
protected virtual void OnDirectoryFound(DirectoryEventArgs args) { DirectoryFound?.Invoke(this, args); }
public void TraverseFileSystem() { Started?.Invoke(); _dirsAndFiles = new List <FileSystemInfo>(); var dirs = new Stack <string>(); dirs.Push(_rootPath); while (dirs.Count > 0) { var currentDir = dirs.Pop(); string[] subDirs; try { subDirs = Directory.GetDirectories(currentDir); foreach (var subDir in subDirs) { var directoryInfo = new DirectoryInfo(subDir); _dirsAndFiles.Add(directoryInfo); var args = new ItemFoundEventArgs <DirectoryInfo>(directoryInfo); DirectoryFound?.Invoke(this, args); if (args.CancelRequested) { return; } dirs.Push(subDir); } } catch (Exception e) { Console.WriteLine(e.Message); continue; } string[] files; try { files = Directory.GetFiles(currentDir); foreach (var file in files) { var fileInfo = new FileInfo(file); _dirsAndFiles.Add(fileInfo); var args = new ItemFoundEventArgs <FileInfo>(fileInfo); FileFound?.Invoke(this, args); if (args.CancelRequested) { break; } } } catch (Exception e) { Console.WriteLine(e.Message); continue; } } Finished?.Invoke(); }