C#:从目录中获取5个最新(最后修改过的)文件

abr*_*pin 8 c# linq directory file

有没有办法可以使用Array?目录存储5个最后修改过的文件的文件位置?

我目前正在使用以下代码获取最后一个文件:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

我将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);
Run Code Online (Sandbox Code Playgroud)

我想存储到来自的文件名列表 files

Pau*_*ips 21

以下是使用LINQ执行此操作的一般方法:

 Directory.GetFiles(path)
             .Select(x => new FileInfo(x))
             .OrderByDescending(x => x.LastWriteTime)
             .Take(5)
             .ToArray()
Run Code Online (Sandbox Code Playgroud)

我怀疑这不是你想要的,因为你的代码示例似乎在不同的任务中工作,但在一般情况下,这将做你的问题标题所要求的.

  • 虽然这个答案有效,但我认为http://stackoverflow.com/questions/1179970/c-sharp-find-most-recent-file-in-dir的答案可能会更好. (2认同)