Ejemplo n.º 1
0
        /// <summary>
        /// Gets the paths.
        /// </summary>
        /// <param name="searchOptions">The search options to use.</param>
        public static IEnumerable <string> GetPaths(PathSearchOptions searchOptions, CancellationToken cancellationToken)
        {
            if (!Directory.Exists(searchOptions.RootDirectory))
            {
                throw new System.IO.DirectoryNotFoundException($"The specified root directory '{searchOptions.RootDirectory}' does not exist. Please provide a valid directory.");
            }

            // If no Search Pattern was provided, then find everything.
            if (string.IsNullOrEmpty(searchOptions.SearchPattern))
            {
                searchOptions.SearchPattern = "*";
            }

            // Get the paths according to the search parameters
            var paths = GetPathsUsingAlphaFs(searchOptions);

            // Return each of the paths, replacing the Root Directory if specified to do so.
            foreach (var path in paths)
            {
                // If we've been asked to stop searching, just return.
                if (cancellationToken.IsCancellationRequested)
                {
                    yield break;
                }

                if (searchOptions.RootDirectoryReplacement == null)
                {
                    yield return(path);
                }
                else
                {
                    yield return(path.Replace(searchOptions.RootDirectory, searchOptions.RootDirectoryReplacement));
                }
            }
        }
Ejemplo n.º 2
0
        private static IEnumerable <string> GetPathsUsingAlphaFs(PathSearchOptions searchOptions)
        {
            DirectoryEnumerationOptions options = (DirectoryEnumerationOptions)searchOptions.TypesToGet |
                                                  DirectoryEnumerationOptions.ContinueOnException | DirectoryEnumerationOptions.SkipReparsePoints;

            if (searchOptions.SearchOption == SearchOption.AllDirectories)
            {
                options |= DirectoryEnumerationOptions.Recursive;
            }

            var paths = Directory.EnumerateFileSystemEntries(searchOptions.RootDirectory, searchOptions.SearchPattern, options);

            return(paths);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Gets the paths.
        /// </summary>
        /// <param name="searchOptions">The search options to use.</param>
        public static IEnumerable <string> GetPaths(PathSearchOptions searchOptions)
        {
            // If no Search Pattern was provided, then find everything.
            if (string.IsNullOrEmpty(searchOptions.SearchPattern))
            {
                searchOptions.SearchPattern = "*";
            }

            // Get the paths according to the search parameters
            var paths = new List <string>();

            switch (searchOptions.TypesToGet)
            {
            case FileSystemTypes.All:
                paths = Directory.GetFileSystemEntries(searchOptions.RootDirectory, searchOptions.SearchPattern, searchOptions.SearchOption).ToList();
                break;

            case FileSystemTypes.Directories:
                paths = Directory.GetDirectories(searchOptions.RootDirectory, searchOptions.SearchPattern, searchOptions.SearchOption).ToList();
                break;

            case FileSystemTypes.Files:
                paths = Directory.GetFiles(searchOptions.RootDirectory, searchOptions.SearchPattern, searchOptions.SearchOption).ToList();
                break;
            }

            // Return each of the paths, replacing the Root Directory if specified to do so.
            foreach (var path in paths)
            {
                if (searchOptions.RootDirectoryReplacement == null)
                {
                    yield return(path);
                }
                else
                {
                    yield return(path.Replace(searchOptions.RootDirectory, searchOptions.RootDirectoryReplacement));
                }
            }
        }
Ejemplo n.º 4
0
        private static IEnumerable <string> GetPathsUsingSystemIo(PathSearchOptions searchOptions)
        {
            // Get the paths according to the search parameters
            var paths = Enumerable.Empty <string>();

            switch (searchOptions.TypesToGet)
            {
            default:
            case FileSystemTypes.All:
                paths = Directory.GetFileSystemEntries(searchOptions.RootDirectory, searchOptions.SearchPattern, searchOptions.SearchOption);
                break;

            case FileSystemTypes.Directories:
                paths = Directory.GetDirectories(searchOptions.RootDirectory, searchOptions.SearchPattern, searchOptions.SearchOption);
                break;

            case FileSystemTypes.Files:
                paths = Directory.GetFiles(searchOptions.RootDirectory, searchOptions.SearchPattern, searchOptions.SearchOption);
                break;
            }

            return(paths);
        }