2012-01-30 44 views
3

我想寫一個從文件夾獲取文件的方法,通過創建時間對它進行排序,獲取前五個最新文件並刪除其餘文件。獲取最新的N個文件並刪除其餘的文件

任何幫助將非常感激,我的代碼,我有如下:

DirectoryInfo Dir = new DirectoryInfo(DirectoryPath); 
FileInfo[] FileList = Dir.GetFiles("*.*", SearchOption.AllDirectories); 
var x = FileList.OrderByDescending(file => file .CreationTime).Take(5); 

如何修改這個代碼刪除所有其他文件?

+0

這有什麼錯的兩行代碼,你得到了什麼?你爲什麼保留所有註釋掉的代碼? – sarnold 2012-01-30 06:35:11

+0

它是跟蹤和錯誤代碼。這兩行代碼很好,我得到了前5個文件,但是如何刪除剩下的文件(不包括我得到的前5個)? – johnnie 2012-01-30 06:38:21

+0

我編輯了一下帖子;如果我得到的標籤不正確,請修正它們 - 或者添加更多標籤,如果更合適的話。 – sarnold 2012-01-30 06:42:03

回答

4

當你在保持第一N和做別的事情,其餘的,它會更好,只是通過一切迴路,拋頭N成一個單獨的列表,同時呼籲其他Delete()

var query = fileList.OrderByDescending(file => file.CreationTime); 
var keepers = new List<FileInfo>(); 
var i = 0; 
foreach (var file in query) 
{ 
    if (i++ < N) 
    { 
     keepers.Add(file); 
    } 
    else 
    { 
     file.Delete(); 
    } 
} 
2

這裏就是我所做的:

var directory = new DirectoryInfo(DirectoryPath); 
var query = directory.GetFiles("*.bmp", SearchOption.AllDirectories); 
foreach (var file in query.OrderByDescending(file => file.CreationTime).Skip(1)) 
{ 
    file.Delete(); 
} 
+0

你可以請看看這個問題http://stackoverflow.com/questions/39263601/windows-phone-8-1-implement-virtualization-for-custom-variable-sized-gridview? – Archana 2016-09-01 05:59:35

相關問題