【问题标题】:Search files based on date created in c#根据在 c# 中创建的日期搜索文件
【发布时间】:2012-03-02 05:14:28
【问题描述】:

我有这个函数,用于读取目录并获取具有特定搜索模式的文件。有没有办法使用基于创建日期或修改日期的搜索模式?

public static List<FileInfo> GetFileList(string fileSearchPattern, string rootFolderPath)
{
    DirectoryInfo rootDir = new DirectoryInfo(rootFolderPath);

    List<DirectoryInfo> dirList = new List<DirectoryInfo>(
        rootDir.GetDirectories("*", SearchOption.AllDirectories));
    dirList.Add(rootDir);

    List<FileInfo> fileList = new List<FileInfo>();

    foreach (DirectoryInfo dir in dirList)
    {
        fileList.AddRange(
            dir.GetFiles(fileSearchPattern, SearchOption.TopDirectoryOnly));
    }

    return fileList;
}

【问题讨论】:

    标签: c# .net


    【解决方案1】:

    不,但您可以使用 Linq 快速过滤它们;类似:

    var files = from c in directoryInfo.GetFiles() 
                where c.CreationTime >somedate
                select c;
    

    【讨论】:

    • 是的,它可以工作,唯一的麻烦是我需要将 IEnumerable 转换为 List,但我找到了它。谢谢
    • 我担心我们公司的一个文件夹有超过 100 万个文件,因此导致 directoryInfo.GetFiles() 没有响应。
    【解决方案2】:

    这给了我上个月的文件,例如:

    new DirectoryInfo("c:\\Aaron")
        .EnumerateFileSystemInfos("*.*", SearchOption.AllDirectories)
        .Where(file =>
            file.CreationTime > DateTime.Now.AddMonths(-1));
    

    【讨论】:

    • 谢谢我以后需要这个
    【解决方案3】:

    使用可以使用

    System.Linq;
    
    var files = directoryInfo.GetFiles().Where(a => a.CreationTime>yourDate).ToList();
    

    这将为您提供一个列表集合。

    【讨论】:

      猜你喜欢
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2013-05-08
      • 2019-06-24
      • 1970-01-01
      • 2020-05-03
      • 2019-06-14
      • 2016-06-05
      相关资源
      最近更新 更多