protected virtual void RaiseFilteredDirectoryFinded(FileOrDirectoryFindedEventArgs args)
 {
     if (FilteredDirectoryFinded != null)
     {
         FilteredDirectoryFinded(this, args);
     }
 }
예제 #2
0
        private IEnumerable <string> GetFilesAndDirectories()
        {
            // После каждого найденной папки/файла будет происходить событие.
            foreach (string directory in Directory.GetDirectories(path))
            {
                var eventArgs = new FileOrDirectoryFindedEventArgs
                {
                    isBreak   = false,
                    isExclude = false,
                    itemName  = directory
                };

                RaiseDirectoryFinded(eventArgs);
                // Если пользовтель захочет исключить найденный файл - он не будет включен в итоговую коллекцию.
                if (!eventArgs.isExclude)
                {
                    yield return(directory);
                }
                // Если пользователь решил прервать дальнейший поиск.
                if (eventArgs.isBreak)
                {
                    yield break;
                }
            }

            foreach (var file in Directory.GetFiles(path))
            {
                var eventArgs = new FileOrDirectoryFindedEventArgs
                {
                    isBreak   = false,
                    isExclude = false,
                    itemName  = file
                };

                RaiseDirectoryFinded(eventArgs);

                if (eventArgs.isBreak)
                {
                    yield break;
                }
                if (!eventArgs.isExclude)
                {
                    yield return(file);
                }
            }

            RaiseEnd();
        }
예제 #3
0
        private IEnumerable <string> GetFilteredFilesAndDirectories()
        {
            foreach (var directory in Directory.GetDirectories(path).Where(filter))
            {
                var eventArgs = new FileOrDirectoryFindedEventArgs
                {
                    isBreak   = false,
                    isExclude = false,
                    itemName  = directory
                };

                RaiseFilteredDirectoryFinded(eventArgs);

                if (eventArgs.isBreak)
                {
                    yield break;
                }
                if (!eventArgs.isExclude)
                {
                    yield return(directory);
                }
            }

            foreach (var file in Directory.GetFiles(path).Where(filter))
            {
                var eventArgs = new FileOrDirectoryFindedEventArgs
                {
                    isBreak   = false,
                    isExclude = false,
                    itemName  = file
                };

                RaiseFilteredFileFinded(eventArgs);

                if (!eventArgs.isExclude)
                {
                    yield return(file);
                }

                if (eventArgs.isBreak)
                {
                    yield break;
                }
            }

            RaiseEnd();
        }
예제 #4
0
        static void OnFileOrDirectoryFound(object sender, FileOrDirectoryFindedEventArgs e)
        {
            string dialog = string.Empty;

            Console.WriteLine(e.itemName + " finded");
            Console.WriteLine("Do you want to stop finding?");

            InputYesOrNo(out dialog);

            if (dialog.ToLower() == "y")
            {
                e.isBreak = true;
            }

            Console.WriteLine("Do you want to exclude this file?");

            InputYesOrNo(out dialog);

            if (dialog.ToLower() == "y")
            {
                e.isExclude = true;
            }
        }