2012-01-30 45 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

相关问题