Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 删除目录中最旧的文件_C# - Fatal编程技术网

C# 删除目录中最旧的文件

C# 删除目录中最旧的文件,c#,C#,我有一个关于删除目录中最旧文件的问题 情况如下: 我想将目录中的文件数量限制为5个文件。一旦达到该限制,我希望它找到目录中最旧的文件并将其删除,以便可以复制新文件 我被告知要使用filewatcher,但我以前从未使用过该功能 using System.IO; using System.Linq; foreach (var fi in new DirectoryInfo(@"x:\whatever").GetFiles().OrderByDescending(x => x.LastWri

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

情况如下:

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

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

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个,然后删除其余文件。

您可以使用
DirectoryInfo.EnumerateFiles
获取文件夹中的文件,使用
CreationTime
Enumerable.OrderByDescending
对其排序,使用
Enumerable.Take(5)
获取最后创建的5个文件。如果有更多,则
列表.ForEach
将删除它们

var files = new DirectoryInfo("path").EnumerateFiles()
     .OrderByDescending(f => f.CreationTime)
     .Skip(5)
     .ToList();
files.ForEach(f => f.Delete());

我想你只需要在有新文件要保存时检查它,这样你就不需要使用filewatcher了。