删除目录中最旧的文件

Sha*_*ill 7 c#

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

情况如下:

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

我被告知要使用filewatcher,但我之前从未使用过该函数.

fej*_*oco 28

using System.IO; using System.Linq;

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

更改目录名称,Skip()和LastWriteTime中的参数,但是您定义"最旧".

以上获取所有文件,首先命令最小,跳过前5个,然后删除其余文件.


Tim*_*ter 5

您可以使用DirectoryInfo.EnumerateFiles获取文件夹中的文件,按CreationTimewith对它们进行排序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());
Run Code Online (Sandbox Code Playgroud)