public DirectoryFileInfo GetDirFileInfo()
        {
            DirectoryFileInfo fileInfo;

            fileInfo.Exists    = false;
            fileInfo.FileCount = 0;
            fileInfo.FileSize  = 0;
            fileInfo.FileInfos = new List <FileInfo>();
            try
            {
                if (Directory.Exists(DirectoryPath))
                {
                    fileInfo.Exists = true;
                    if (!DirectoryExistOnly)
                    {
                        foreach (string filePath in System.IO.Directory.GetFiles(DirectoryPath, FileFilter))
                        {
                            System.IO.FileInfo fi = new System.IO.FileInfo(filePath);

                            if ((FileMaxAgeSec == 0 || fi.LastWriteTime.AddSeconds(FileMaxAgeSec) > DateTime.Now) &&
                                (FileMinAgeSec == 0 || fi.LastWriteTime.AddSeconds(FileMinAgeSec) < DateTime.Now) &&
                                (FileMaxSizeKB == 0 || fi.Length <= (FileMaxSizeKB * 1024)) &&
                                (FileMinSizeKB == 0 || fi.Length >= (FileMinSizeKB * 1024))
                                )
                            {
                                bool match = true;
                                if (ContainsText != null && ContainsText.Trim().Length > 0)
                                {
                                    string content = File.ReadAllText(filePath);
                                    if (UseRegEx)
                                    {
                                        System.Text.RegularExpressions.Match regMatch = System.Text.RegularExpressions.Regex.Match(content, ContainsText, System.Text.RegularExpressions.RegexOptions.Multiline);
                                        match = regMatch.Success;
                                    }
                                    else
                                    {
                                        match = content.Contains(ContainsText);
                                    }
                                }
                                if (match)
                                {
                                    fileInfo.FileSize  += fi.Length;
                                    fileInfo.FileCount += 1;
                                    fileInfo.FileInfos.Add(fi);
                                }
                            }
                        }
                    }
                }
                else
                {
                    fileInfo.Exists = false;
                }
            }
            catch (Exception ex)
            {
                LastErrorMsg       = ex.Message;
                fileInfo.FileCount = -1;
                fileInfo.FileSize  = -1;
            }
            return(fileInfo);
        }
Exemplo n.º 2
0
        public DirectoryFileInfo GetFileListByFilters()
        {
            DirectoryFileInfo fileInfo;

            fileInfo.DirectoryExists = false;
            fileInfo.FileCount       = 0;
            fileInfo.TotalFileSize   = 0;
            fileInfo.FileInfos       = new List <FileInfo>();
            string fullFilePath = Environment.ExpandEnvironmentVariables(DirectoryPath);

            try
            {
                if (Directory.Exists(fullFilePath))
                {
                    fileInfo.DirectoryExists = true;
                    if (!DirectoryExistOnly)
                    {
                        SearchOption so = IncludeSubDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;
                        foreach (string filePath in System.IO.Directory.GetFiles(fullFilePath, FileFilter, so))
                        {
                            System.IO.FileInfo fi = new System.IO.FileInfo(filePath);

                            if ((FileMaxAge == 0 || TimeUnitsTools.AddTime(fi.LastWriteTime, FileMaxAge, FileAgeUnit) > DateTime.Now) &&
                                (FileMinAge == 0 || TimeUnitsTools.AddTime(fi.LastWriteTime, FileMinAge, FileAgeUnit) < DateTime.Now) &&
                                (FileMaxSize == 0 || fi.Length <= FileSizeUnitsTools.ToBytes(FileSizeUnit, FileMaxSize)) &&
                                (FileMinSize == 0 || fi.Length >= FileSizeUnitsTools.ToBytes(FileSizeUnit, FileMinSize))
                                )
                            {
                                bool match = true;
                                if (ContainsText != null && ContainsText.Trim().Length > 0)
                                {
                                    string content = File.ReadAllText(filePath);
                                    if (UseRegEx)
                                    {
                                        System.Text.RegularExpressions.Match regMatch = System.Text.RegularExpressions.Regex.Match(content, ContainsText, System.Text.RegularExpressions.RegexOptions.Multiline);
                                        match = regMatch.Success;
                                    }
                                    else
                                    {
                                        match = content.Contains(ContainsText);
                                    }
                                }
                                if (match)
                                {
                                    fileInfo.TotalFileSize += fi.Length;
                                    fileInfo.FileCount     += 1;
                                    fileInfo.FileInfos.Add(fi);
                                }
                            }
                        }
                    }
                }
                else
                {
                    fileInfo.DirectoryExists = false;
                }
            }
            catch (Exception ex)
            {
                LastErrorMsg           = ex.Message;
                fileInfo.FileCount     = -1;
                fileInfo.TotalFileSize = -1;
            }
            return(fileInfo);
        }