Exemplo n.º 1
0
        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);
                }
            }
        }
Exemplo n.º 2
0
        private DirectoryEntityCollection FilterDirectories(DirectoryEntityCollection collection)
        {
            collection.Directories = _filterAction?.Invoke(collection.Directories) ?? collection.Directories;

            for (var i = 0; i < collection.SubEntities.Length; i++)
            {
                collection.SubEntities[i] = FilterDirectories(collection.SubEntities[i]);
            }

            FilteredDirectoryFinded?.Invoke(ref args);
            if (args.RemoveDirectories.Any())
            {
                collection.RemoveFolder(args.RemoveDirectories);
            }
            if (args.RemoveFiles.Any())
            {
                collection.RemoveFiles(args.RemoveFiles);
            }
            if (args.StopSearching)
            {
                return(collection);
            }

            return(collection);
        }
Exemplo n.º 3
0
 private void CallEventDirectoryFound()
 {
     if (filtered)
     {
         FilteredDirectoryFinded?.Invoke(this, directoryArgs);
     }
     else
     {
         DirectoryFinded?.Invoke(this, directoryArgs);
     }
 }
        protected virtual void OnDirectoryFinded(DirectoryInfo directoryInfo, bool isFiltered = false)
        {
            var arg = new ItemFindedArg <FileSystemInfo>(directoryInfo);

            _argList.Add(arg);

            if (isFiltered)
            {
                FilteredDirectoryFinded?.Invoke(this, arg);
            }

            else
            {
                DirectoryFinded?.Invoke(this, arg);
            }
        }
 protected virtual void OnFilteredDirectoryFinded(FileSystemEventArgs args)
 {
     FilteredDirectoryFinded?.Invoke(this, args);
 }
Exemplo n.º 6
0
 protected virtual void OnFilteredDirectoryFinded(string path) //запуск события после фильтрации
 {
     FilteredDirectoryFinded?.Invoke(path);
     Console.WriteLine(path);
 }