【问题标题】:how can i list the file by creation date如何按创建日期列出文件
【发布时间】:2013-09-25 14:00:14
【问题描述】:

我有 ASP.NET (C#) 4.0。

我的代码是这样的:

public IEnumerable<string> GetFiles(string searchPatternExpression)
{
    string path = @"D:\xxx\";
    SearchOption searchOption = SearchOption.TopDirectoryOnly;
    Regex reSearchPattern = new Regex(searchPatternExpression);
    return Directory
        .EnumerateFiles(path, "*", searchOption)
        .Where(file => reSearchPattern.IsMatch(Path.GetFileName(file)))
        .OrderBy(file => file);
}

如何按文件的创建日期排序?

【问题讨论】:

    标签: c# asp.net-mvc file directory


    【解决方案1】:

    因此需要获取文件创建时间,最好使用DirectoryInfo获取FileInfos,而不是简单的字符串:

    public IEnumerable<string> GetFiles(string searchPatternExpression)
    {
        string path = @"D:\xxx\";
        SearchOption searchOption = SearchOption.TopDirectoryOnly;
        Regex reSearchPattern = new Regex(searchPatternExpression);
        return new DirectoryInfo(path)
            .EnumerateFiles("*", searchOption)
            .Where(file => reSearchPattern.IsMatch(file.Name))
            .OrderBy(file => file.CreationTime)
            .Select(file => file.FullName); // return just names
    }
    

    【讨论】:

      【解决方案2】:

      试试这个:

      public IEnumerable<string> GetFiles(string searchPatternExpression)
      {
          string path = @"D:\xxx\";
          SearchOption searchOption = SearchOption.TopDirectoryOnly;
          Regex reSearchPattern = new Regex(searchPatternExpression);
          return Directory
              .EnumerateFiles(path, "*", searchOption)
              .Where(file => reSearchPattern.IsMatch(Path.GetFileName(file)))
              .OrderBy(file => new FileInfo(file).CreationTime);
      }
      

      【讨论】:

      • 需要一个额外的 .Select() 来返回一个字符串。修复它,它会工作......但每个匹配的文件都需要额外的磁盘访问权限。
      猜你喜欢
      • 1970-01-01
      • 2020-02-29
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2011-12-20
      • 2022-06-15
      • 2019-08-15
      • 2020-03-26
      相关资源
      最近更新 更多