12

我有一个关于删除目录中最旧文件的问题。

情况如下:

我想将目录中的文件数量限制为 5 个文件。一旦达到该限制,我希望它在目录中找到最旧的文件并将其删除,以便可以复制新文件。

我被告知要使用 filewatcher,但是我以前从未使用过该功能。

4

2 回答 2

35
using System.IO; using System.Linq;

foreach (var fi in new DirectoryInfo(@"x:\whatever").GetFiles().OrderByDescending(x => x.LastWriteTime).Skip(5))
    fi.Delete();

将目录名称、Skip() 中的参数和 LastWriteTime 更改为您定义的“最旧”。

以上获取所有文件,首先对它们进行排序,跳过前 5 个文件,然后删除其余文件。

于 2013-11-13T09:03:33.830 回答
5

您可以使用DirectoryInfo.EnumerateFiles获取文件夹中的文件,通过CreationTimewith对它们进行排序Enumerable.OrderByDescendingEnumerable.Take(5)用于获取最后创建的 5 个文件。如果有更多List.ForEach将删除它们。

var files = new DirectoryInfo("path").EnumerateFiles()
     .OrderByDescending(f => f.CreationTime)
     .Skip(5)
     .ToList();
files.ForEach(f => f.Delete());
于 2013-11-13T09:04:32.233 回答