【问题标题】:C#: Get the 5 newest (last modified) files from a directoryC#:从目录中获取 5 个最新(最后修改)的文件
【发布时间】:2012-07-09 01:26:40
【问题描述】:

有没有办法可以使用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;
    }
}

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

更新

我目前正在使用下面的代码来获取 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的文件名列表

【问题讨论】:

  • 您是否只需要文件定义末尾的“.ToArray()”?即var files = directory.GetFiles().Where(file =&gt; file.LastWriteTime &gt;= from_date &amp;&amp; file.LastWriteTime &lt;= to_date).ToArray();
  • @Michael 我不断收到错误“无法将类型 'string' 隐式转换为 'System.IO.FileInfo'”
  • 您必须从路径创建一个FileInfo 对象。使用适当的构造函数,new FileInfo(path)

标签: c# linq file directory


【解决方案1】:

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

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

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

【讨论】:

【解决方案2】:

听起来您想要一个目录中所有文件的完整文件路径的string 数组。

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

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

如果您只需要文件名,请将FullName 替换为Name

【讨论】:

    【解决方案3】:

    虽然 Paul Phillips 提供的答案有效。值得记住的是 FileInfo.LastWriteTime & FileInfo.LastAccessTime 并不总是有效。这取决于操作系统的配置方式或可能是缓存问题。

    .NET FileInfo.LastWriteTime & FileInfo.LastAccessTime are wrong

    File.GetLastWriteTime seems to be returning 'out of date' value

    【讨论】:

      猜你喜欢
      • 2011-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-07
      • 2018-04-04
      • 2013-03-19
      • 1970-01-01
      相关资源
      最近更新 更多