有没有办法删除目录中最旧的文件?使用c#

时间:2015-12-14 12:56:40

标签: c#

所以我的笔记本电脑上有一个目录。我的程序存储xml文档的位置。但我希望程序能够找到最旧的并删除该目录中有100多个文档。

这是我检查目录中xml文档数量的方式。

private int CheckAmountOfFiles()
    {
        var fileCount = (from file in Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "*.xml", SearchOption.TopDirectoryOnly) select file).Count();
        return fileCount;
    }

我不知道这是否可能?希望你们中的一个能帮帮忙。

2 个答案:

答案 0 :(得分:3)

首先按创建日期对已检索列表进行排序,跳过前100个元素并将所有剩余元素保留到列表中。然后删除该列表中的所有文件。

var oldFiles = Directory.EnumerateFiles(/*...*/)
                        .Select(i => new FileInfo(i))
                        .OrderByDescending(i => i.DateCreated)
                        .Skip(100);

foreach(var file in oldFiles)
{
    file.Delete();
}

答案 1 :(得分:0)

这样的事情:

  var last = Directory.EnumerateFiles(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments))
    .Select(fileName => new FileInfo(fileName))
    .OrderByDescending(fileInfo => fileInfo.LastWriteTime) // or "CreationTime"
    .Skip(100) // Skip 100 newest files
    .Select(fileInfo => fileInfo.FullName);

...

  foreach (var fileName in last)
    File.Delete(fileName);

请注意,为了获得所需的时间,您必须使用FileInfo