2012-02-09 50 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(); 

這會給你一個列表集合。