示例#1
0
        private static string?GetParentPath(string path)
        {
            // Remove trailing slashes, so that GetDirectoryName returns
            // "Foo" in C:\Foo\Project\" instead of "C:\Foo\Project".
            if (Path.EndsInDirectorySeparator(path))
            {
                path = path.TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
            }

            return(Path.GetDirectoryName(path));
        }
        private IEnumerable <string> EnumerateFullFileSystemPaths(string path, string searchPattern, bool includeFiles, bool includeDirectories)
        {
            FindPredicate predicate = (ref ReadOnlySpan <char> fileName) =>
            {
                return(FileMatcher.IsAllFilesWildcard(searchPattern) || FileMatcher.IsMatch(fileName, searchPattern));
            };
            FindTransform <string> transform = (ref ReadOnlySpan <char> fileName) => Path.Join(path.AsSpan(), fileName);

            IEnumerable <string> directories = includeDirectories
                ? _directoryCache.EnumerateDirectories(path, searchPattern, predicate, transform)
                : Enumerable.Empty <string>();
            IEnumerable <string> files = includeFiles
                ? _directoryCache.EnumerateFiles(path, searchPattern, predicate, transform)
                : Enumerable.Empty <string>();

            return(Enumerable.Concat(directories, files));
        }