Beispiel #1
0
        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));
                }
            }
        }
Beispiel #2
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));
            }
        }