C#:从目录获取最新的5(最后修订)文件(C#: Get the 5 newest (last mo

2019-07-30 07:33发布

有没有一种方法,我可以存储从使用目录中的5个上次修改文件的文件位置Array

我目前使用以下下列代码来获得的最后一个文件:

DateTime lastHigh = new DateTime(1900,1,1);
string highDir;
foreach (string subdir in Directory.GetDirectories(path)){
    DirectoryInfo fi1 = new DirectoryInfo(subdir);
    DateTime created = fi1.LastWriteTime;

    if (created > lastHigh){
        highDir = subdir;
        lastHigh = created;
    }
}

我将使用Array将多个文件发送到一个电子邮件地址作为附件。

UPDATE

我目前使用下面的代码1分钟后得到最后修改的文件:

string myDirectory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyPictures),
                  "Test Folder");
var directory = new DirectoryInfo(myDirectory);
DateTime from_date = DateTime.Now.AddMinutes(-1);
DateTime to_date = DateTime.Now;
var files = directory.GetFiles().Where(file => file.LastWriteTime >= from_date && file.LastWriteTime <= to_date);

我想存储的文件名列表从哪里来files

Answer 1:

下面是使用LINQ做到这一点的一般方法:

 Directory.GetFiles(path)
             .Select(x => new FileInfo(x))
             .OrderByDescending(x => x.LastWriteTime)
             .Take(5)
             .ToArray()

我怀疑这是不太你想要什么,因为你的代码示例似乎在不同的任务是工作,但在一般情况下,这会做什么你的问题的请求的标题。



Answer 2:

这听起来像你想有一个string在目录中的所有文件的完整文件路径的数组。

鉴于你已经有你FileInfo枚举,你可以这样做:

var filenames = files.Select(f => f.FullName).ToArray();

如果你想只是文件名,更换FullNameName



文章来源: C#: Get the 5 newest (last modified) files from a directory