在日期范围之后获取目录和子目录中的所有文件

时间:2015-05-12 08:43:18

标签: c#

有没有办法在日期范围之后获取目录和子目录中的所有文件?

我知道Int可以迭代所有文件夹但是这不能让我访问我可以在其上执行if语句的文件对象。

1 个答案:

答案 0 :(得分:1)

您可以使用File.GetCreationTimeSearchOption.AllDirectories,例如:

var allFilesIn2015 = Directory.EnumerateFiles("Dir-Path", "*.*", System.IO.SearchOption.AllDirectories)
    .Where(path => File.GetCreationTime(path).Year == 2015)
    .ToList();

您还可以使用FileInfo及其属性 CreationTimeLastAccessTime

DirectoryInfo dir = new DirectoryInfo("Dir-Path");
var allFileInfosIn2015 = dir.EnumerateFiles("*.*", System.IO.SearchOption.AllDirectories)
    .Where(fi => fi.CreationTime.Year == 2015)
    .ToList();

我使用EnumerateFiles,因为在这种情况下更有效。在开始处理之前,不需要将所有文件加载到内存中。

引用:

  

EnumerateFiles和GetFiles方法的区别如下:当你   使用EnumerateFiles,您可以开始枚举名称集合   在整个收藏品归还之前;当你使用GetFiles时,你   必须等待返回整个名称数组才能返回   访问数组。因此,当您使用许多文件和   目录,EnumerateFiles可以更有效。