Directory.GetFiles仅获取今天的文件

.NET Directory.GetFiles中有很好的function,当我需要从目录中获取所有文件时,它很容易使用它。

Directory.GetFiles("c:\\Files") 

但是,如果存在大量具有不同创建时间的文件,我如何(仅仅使用什么模式)来获取创建时间的文件?

谢谢!

试试这个:

 var todayFiles = Directory.GetFiles("path_to_directory") .Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date); 

为了提高性能,特别是如果目录搜索可能很大,使用Directory.EnumerateFiles() ,它懒洋洋地在搜索路径上进行枚举,比Directory.GetFiles()更好,后者急切地通过搜索路径枚举,收集所有内容。在过滤any之前匹配:

 DateTime today = DateTime.Now.Date ; FileInfo[] todaysFiles = new DirectoryInfo(@"c:\foo\bar") .EnumerateFiles() .Select( x => { x.Refresh(); return x; }) .Where( x => x.CreationTime.Date == today || x.LastWriteTime == today ) .ToArray() ; 

请注意, FileSystemInfo及其子类型的属性可以(并且)被缓存,因此它们不一定反映当前的当前现实。 因此,调用Refresh()以确保数据是正确的。

您需要获取该文件的directoryinfo

 public List getTodaysFiles(String folderPath) { List todaysFiles = new List(); foreach (String file in Directory.GetFiles(folderPath)) { DirectoryInfo di = new DirectoryInfo(file); if (di.CreationTime.ToShortDateString().Equals(DateTime.Now.ToShortDateString())) todaysFiles.Add(file); } return todaysFiles; } 

你可以使用这段代码:

 var directory = new DirectoryInfo("C:\\MyDirectory"); var myFile = (from f in directory.GetFiles() orderby f.LastWriteTime descending select f).First(); // or... var myFile = directory.GetFiles() .OrderByDescending(f => f.LastWriteTime) .First(); 

请参阅此处: 如何使用.NET查找目录中的最新文件,而不进行循环?

使用System.Linq;

 DirectoryInfo info = new DirectoryInfo(""); FileInfo[] files = info.GetFiles().OrderBy(p => p.CreationTime).ToArray(); foreach (FileInfo file in files) { // DO Something... } 

如果您想将其分解为特定日期,可以使用filter尝试此操作

 var files = from c in directoryInfo.GetFiles() where c.CreationTime >dateFilter select c; 

你应该能够解决这个问题:

 var loc = new DirectoryInfo("C:\\"); var fileList = loc.GetFiles().Where(x => x.CreationTime.ToString("dd/MM/yyyy") == currentDate); foreach (FileInfo fileItem in fileList) { //Process the file } 
 var directory = new DirectoryInfo(Path.GetDirectoryName(@"--DIR Path--")); DateTime from_date = DateTime.Now.AddDays(-5); DateTime to_date = DateTime.Now.AddDays(5); //For Today var filesLst = directory.GetFiles().AsEnumerable() .Where(file.CreationTime.Date == DateTime.Now.Date ).ToArray(); //For date range + specific file extension var filesLst = directory.GetFiles().AsEnumerable() .Where(file => file.CreationTime.Date >= from_date.Date && file.CreationTime.Date <= to_date.Date && file.Extension == ".txt").ToArray(); //To get ReadOnly files from directory var filesLst = directory.GetFiles().AsEnumerable() .Where(file => file.IsReadOnly == true).ToArray(); //To get files based on it's size int fileSizeInKB = 100; var filesLst = directory.GetFiles().AsEnumerable() .Where(file => (file.Length)/1024 > fileSizeInKB).ToArray();