有没有办法在日期范围之后获取目录和子目录中的所有文件?
我知道Int
可以迭代所有文件夹但是这不能让我访问我可以在其上执行if语句的文件对象。
答案 0 :(得分:1)
您可以使用File.GetCreationTime
和SearchOption.AllDirectories
,例如:
var allFilesIn2015 = Directory.EnumerateFiles("Dir-Path", "*.*", System.IO.SearchOption.AllDirectories)
.Where(path => File.GetCreationTime(path).Year == 2015)
.ToList();
您还可以使用FileInfo
及其属性
CreationTime
或LastAccessTime
:
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可以更有效。