2014-08-28 31 views
0

我試圖從我Directory採取5個最新文件:爲什麼我DirectoryInfo.GetFiles返回0的結果雖然文件夾已滿

string folder = @"C:\temp"; 

DirectoryInfo dir = new DirectoryInfo(folder); 
var files = dir.GetFiles() 
     .OrderByDescending(f => f.LastWriteTime).Take(5); 

這回0的結果雖然文件夾已滿的F個文件。

UPDATE:

private static List<string> _folders; 
public delegate void OnFileAddDelegate(FileInfo[] files); 
public event OnFileAddDelegate OnFileAddEventHandler; 

public void SearchFiles() 
{ 
    foreach (string folder in _folders) 
    { 
     if (Directory.Exists(folder)) 
     { 
      DirectoryInfo dir = new DirectoryInfo(folder); 
      var files = dir.GetFiles() 
        .OrderByDescending(f => f.LastWriteTime).Take(5).ToArray(); 

      foreach (var item in files) 
       OnFileAddEventHandler(files); 
     } 
    } 
} 

目前我的問題是,我期待的最新的5個文件,但如果只有1文件中存在的回報超過10(兩次相同的文件)

+2

請問你運行你的代碼在訪問這些文件的帳戶? – 2014-08-28 16:12:12

+0

是,路徑有效 – 2014-08-28 16:13:00

+1

什麼是「0結果」?你如何檢查它? – JeffRSon 2014-08-28 16:14:45

回答

2

你打電話你的處理程序在枚舉EACH文件的同時傳遞所有文件(你沒有通過項目但是文件,所以如果你有10次你說,10次,通過整個列表)

你在做什麼:

 foreach (var item in files) 
      OnFileAddEventHandler(files); 

你可能想要做

 OnFileAddEventHandler(files); 

或者是什麼,如果它需要單個文件

 foreach (var item in files) 
      OnFileAddEventHandler(item); 
相關問題