Ejemplo n.º 1
0
        public static IEnumerable <DirectoryInfo> GetDirList(string path, string fileFilter, SearchOption searchOption)
        {
            var root       = new DirectoryInfo(path);
            var enumerable = new DirSystemEnumerable(root, fileFilter, searchOption);

            enumerable.GetEnumerator();
            return(enumerable);

            //DirectoryInfo d = new DirectoryInfo(path);
            //FileInfo[] files = d.GetFiles(fileFilter, searchOption);
            //return files;
        }
Ejemplo n.º 2
0
        public IEnumerator <DirectoryInfo> GetEnumerator()
        {
            if (_root == null || !_root.Exists)
            {
                yield break;
            }

            IEnumerable <DirectoryInfo> matches = new List <DirectoryInfo>();

            try
            {
                foreach (var pattern in _patterns)
                {
                    matches = matches.Concat(_root.EnumerateDirectories(pattern, SearchOption.TopDirectoryOnly));
                }
            }
            catch (UnauthorizedAccessException uauthe)
            {
                PathException.Add(string.Format("{0} - {1}", "Unauthorised Access", uauthe.Message));
                yield break;
            }
            catch (PathTooLongException ptle)
            {
                PathException.Add(string.Format("{0} - {1}", "Path too long", ptle.Message));
                yield break;
            }

            foreach (var dir in matches)
            {
                yield return(dir);
            }

            if (_option == SearchOption.AllDirectories)
            {
                foreach (var dir in _root.EnumerateDirectories("*", SearchOption.TopDirectoryOnly))
                {
                    var fileSystemInfos = new DirSystemEnumerable(dir, _patterns, _option);
                    foreach (var match in fileSystemInfos)
                    {
                        yield return(match);
                    }
                }
            }
        }