Получить последние N файлов и удалить остальные - PullRequest
3 голосов
/ 30 января 2012

Я пытаюсь написать метод, который получает файлы из папки, упорядочивает их по времени создания, берет пять лучших последних файлов и удаляет остальные.

Любая помощь будет высоко ценится, мой код, который я имею, выглядит следующим образом:

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

Как мне изменить этот код, чтобы удалить все остальные файлы?

Ответы [ 2 ]

4 голосов
/ 30 января 2012

Поскольку вы сохраняете первый N и делаете что-то еще с остальными, было бы лучше просто пройтись по всему циклу, выбрасывая первый N в отдельный список, вызывая Delete() для остальных. 1004 *

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();
    }
}
3 голосов
/ 17 августа 2016

Вот что я сделал:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...