private IEnumerable <DirectoryListDTO> GetDirectories(Regex?regex, bool ignoreErrors, DirectoryQuery query, int maxDepth) { string[] directories; try { directories = Directory.GetDirectories(query.Path); } catch (Exception e) { directories = new string[] { }; if (!ignoreErrors) { WriteError(e.ToString()); } } foreach (var dir in directories) { var matchesIncludeFilter = regex == null || regex.IsMatch(dir); if (query.Depth + 1 <= maxDepth) { _dirList.Push(new DirectoryQuery(dir, query.Depth + 1)); } if (!matchesIncludeFilter) { continue; } if (!dir.EndsWith("\\")) { yield return(WriteOutput(dir + "\\", 0)); } else { yield return(WriteOutput(dir, 0)); } } }
private IEnumerable <DirectoryListDTO> GetFiles(Regex?regex, bool ignoreErrors, DirectoryQuery query) { string[] files; try { files = Directory.GetFiles(query.Path); } catch (Exception e) { files = new string[] { }; if (!ignoreErrors) { WriteError(e.ToString()); } } foreach (var file in files) { if (regex != null && !regex.IsMatch(file) && !regex.IsMatch(query.Path)) { continue; } long?size = null; try { var info = new FileInfo(file); size = info.Length; } catch { } yield return(WriteOutput(file, size)); } }