我有一个关于删除目录中最旧文件的问题。
情况如下:
我想将目录中的文件数量限制为5个文件。一旦达到该限制,我希望它找到目录中最旧的文件并将其删除,以便可以复制新文件。
我被告知要使用filewatcher,但我之前从未使用过该函数。
答案 0 :(得分:25)
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个,然后删除其余文件。
答案 1 :(得分:3)
您可以使用DirectoryInfo.EnumerateFiles
获取文件夹中的文件,使用CreationTime
按Enumerable.OrderByDescending
订购,使用Enumerable.Take(5)
获取最后创建的5个文件。如果还有更多List.ForEach
将删除它们。
var files = new DirectoryInfo("path").EnumerateFiles()
.OrderByDescending(f => f.CreationTime)
.Skip(5)
.ToList();
files.ForEach(f => f.Delete());