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; }
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); } } } }