2012-02-09 46 views
3

我有这个功能,我用它来读取目录并获取具有特定搜索模式的文件。有没有基于创建日期或修改日期使用搜索模式的方法?根据c#中创建的日期搜索文件

public static List<FileInfo> GetFileList(string fileSearchPattern, string rootFolderPath) 
{ 
    DirectoryInfo rootDir = new DirectoryInfo(rootFolderPath); 

    List<DirectoryInfo> dirList = new List<DirectoryInfo>(
     rootDir.GetDirectories("*", SearchOption.AllDirectories)); 
    dirList.Add(rootDir); 

    List<FileInfo> fileList = new List<FileInfo>(); 

    foreach (DirectoryInfo dir in dirList) 
    { 
     fileList.AddRange(
      dir.GetFiles(fileSearchPattern, SearchOption.TopDirectoryOnly)); 
    } 

    return fileList; 
} 

回答

12

不,你可以用Linq快速过滤它们;是这样的:

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

+1 - 优雅,简单。 – 2012-02-09 17:46:00

+0

是的,它工作,唯一的麻烦是我需要将IEnumerable转换为列表,但我发现它。 Thanx – themis 2012-02-09 17:54:23

4

这让我将文件从上个月,例如:

new DirectoryInfo("c:\\Aaron") 
    .EnumerateFileSystemInfos("*.*", SearchOption.AllDirectories) 
    .Where(file => 
     file.CreationTime > DateTime.Now.AddMonths(-1)); 
+0

Thanx我会需要这个以备后用 – themis 2012-02-09 17:54:46

0

使用可以使用

System.Linq; 

var files = directoryInfo.GetFiles().Where(a => a.CreationTime>yourDate).ToList(); 

这会给你一个列表集合。