Example #1
0
        public List <FastFileInfo> GetAllFiles(SearchCriteria criteria)
        {
            //string[] fileEntries = null;
            IEnumerable <FastFileInfo> files = null;
            //var directory = new DirectoryInfo(criteria.TargetFolder);
            var searchPattern = criteria.SearchPattern.Equals(string.Empty) ? "*.*" : criteria.SearchPattern;
            var searchOption  = criteria.IncludeSubfolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;

            if (criteria.UseDateRange)
            {
                var startTime = new DateTime();
                var endTime   = DateTime.Now;

                if (criteria.DateRangeToday)
                {
                    startTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
                }
                else if (criteria.DateRangeLast4Hours)
                {
                    startTime = DateTime.Now.AddHours(-4);
                }
                else if (criteria.DateRangeLastHour)
                {
                    startTime = DateTime.Now.AddHours(-1);
                }
                else if (criteria.DateRangeJustNow)
                {
                    startTime = DateTime.Now.AddMinutes(-2);
                }
                else // Use from and to date
                {
                    startTime = criteria.StartTime ?? DateTime.MinValue;
                    endTime   = criteria.EndTime ?? DateTime.MinValue;
                }

                // Source: https://sourceforge.net/projects/fastfileinfo/

                //files = directory.GetFiles(searchPattern, searchOption)
                //    .Where(f => f.LastWriteTime >= startTime && f.LastWriteTime <= endTime);
                files = FastFileInfo.EnumerateFiles(criteria.TargetFolder, searchPattern, searchOption)
                        .Where(f => f.LastWriteTime >= startTime && f.LastWriteTime <= endTime);
            }
            else
            {
                //files = directory.GetFiles(searchPattern, searchOption);
                files = FastFileInfo.EnumerateFiles(criteria.TargetFolder, searchPattern, searchOption);
            }

            return(files.ToList());
        }