2012-03-28 370 views
8

我正在使用Directory.GetFiles從特定文件夾中獲取文件。 默認情況下,該文件夾中的文件按照文件名即即時進行排序。按文件名的字母順序排列。我想按文件被修改的順序獲取文件。Directory.GetFiles按日期排序

我不能使用Directory.GetInfo,因爲我想獲取包含特定關鍵字的文件。 請讓我知道我們如何才能獲得按修改日期排序的文件。 我使用下面的代碼

string[] arr1 = Directory.GetFiles("D:/TestFolder", "*"Test12"*"); 

任何幫助將不勝感激。

回答

10

怎麼樣下方

DirectoryInfo di = new DirectoryInfo("D:\\TestFolder"); 
FileSystemInfo[] files = di.GetFileSystemInfos(); 
var orderedFiles = files.Where(f=>f.Name.StartsWith("Test12")) 
         .OrderBy(f => f.CreationTime) 
         .ToList(); 

您可以用任何字符串函數替換f.Name.StartWith針對您的需求(.Contains等)

可以用f.LastWriteTime替代f => f.CreationTime拿到心目中的修改時間,但熊即從Windows Vista開始,上次訪問時間默認情況下不會更新。這是爲了提高文件系統的性能

+0

如何在VB文件中寫這個.OrderBy(f => f.CreationTime) – 2015-08-17 16:36:41

5

如果切換到目錄信息,你可以做

FileInfo[] files = new DirectoryInfo("path") 
         .GetFiles("filter") 
         .OrderBy(f => f.CreationTime) 
         .ToArray(); 

編輯:
看見你就想修改日期,可以做到這一點,而不是f.LastWriteTime