private void ProcessFilteredEntry(FileSystemInfoBase systemInfoBase, FilteredFileSystemInfoFound args) { var isDirectory = systemInfoBase.Attributes.HasFlag(FileAttributes.Directory); if (isDirectory) { FilteredDirectoryFound?.Invoke(systemInfoBase, args); } else { FilteredFileFound?.Invoke(systemInfoBase, args); } }
protected virtual void OnFilteredFileFound(FilteredContentFindedEventArgs e) { if (ReferenceEquals(e, null)) { throw new ArgumentNullException(); } FilteredFileFound?.Invoke(this, e); if (!_searchStopped) { _searchStopped = e.StopSearch; } _itemRemoved = e.RemoveItem; }
public FileSystemVisitor(string rootPath, Func <FileSystemInfo, bool> predicate) : this(rootPath) { _dirsAndFiles = _dirsAndFiles.Where(item => predicate(item)).ToList(); _dirsAndFiles.ForEach(item => { if ((item.Attributes & FileAttributes.Directory) == FileAttributes.Directory) { FilteredDirectoryFound?.Invoke(this, new FilteredItemFoundEventArgs <DirectoryInfo>(item as DirectoryInfo)); } else { FilteredFileFound?.Invoke(this, new FilteredItemFoundEventArgs <FileInfo>(item as FileInfo)); } }); }
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 OnFilteredFileFound(ItemFoundInfoEventArgs e) { FilteredFileFound?.Invoke(this, e); }
protected virtual void OnFilteredFileFound(SystemVisitorEventArgs e) { FilteredFileFound?.Invoke(this, e); _isStop = e.IsStop; _isSkip = e.IsSkip; }
private void OnFilteredFileFound(PathEventArgs args) { FilteredFileFound?.Invoke(this, args); }
protected virtual void OnFilteredFileFound(FileEventArgs args) { FilteredFileFound?.Invoke(this, args); }
private bool TryToAddChildNodes(FolderNode root, Predicate <FileSystemNode> predicate, LinkedList <FileSystemNode> list) { var isChildAccording = false; foreach (var node in root) { if (_shoudBeStopped) { throw new StopException(); } var predicateResult = predicate(node); switch (node) { case FileNode file: { if (predicateResult) { var ev = new FileNodeFindEvent(file); FilteredFileFound?.Invoke(this, ev); if (ev.ShouldBeAdd) { list.AddLast(file); isChildAccording = true; _shoudBeStopped = ev.StopSearch; } } break; } case FolderNode folder: { var lastNode = list.Last; if (TryToAddChildNodes(folder, predicate, list) || predicateResult) { var ev = new FolderNodeFindEvent(folder); FilteredFolderFound?.Invoke(this, ev); if (ev.ShouldBeAdd) { if (lastNode != null) { list.AddAfter(lastNode, folder); } else if (list.Count > 0) { list.AddFirst(folder); } else { list.AddLast(folder); } isChildAccording = true; _shoudBeStopped = ev.StopSearch; } } } break; } } return(isChildAccording); }