Directory.GetFiles仅获取今天的文件

iho*_*rko 14 .net c# asp.net

在.NET Directory.GetFiles中有很好的功能,当我需要从目录中获取所有文件时,它很容易使用它.

Directory.GetFiles("c:\\Files")
Run Code Online (Sandbox Code Playgroud)

但是,如果存在大量具有不同创建时间的文件,我可以使用如何(什么模式)仅获取创建时间的文件?

谢谢!

Nic*_*rey 25

为了提高性能,特别是如果目录搜索可能很大,那么Directory.EnumerateFiles()在搜索路径上懒惰地使用,比搜索路径Directory.GetFiles()急切地枚举一样,在过滤任何匹配之前收集所有匹配:

DateTime today = DateTime.Now.Date ;
FileInfo[] todaysFiles = new DirectoryInfo(@"c:\foo\bar")
                         .EnumerateFiles()
                         .Select( x => {
                            x.Refresh();
                            return x;
                         })
                         .Where( x => x.CreationTime.Date == today || x.LastWriteTime == today )
                         .ToArray()
                         ;
Run Code Online (Sandbox Code Playgroud)

请注意,FileSystemInfo可以(和)缓存属性及其子类型,因此它们不一定反映当前的当前现实.因此,要求Refresh()确保数据是正确的.


kma*_*zek 24

试试这个:

var todayFiles = Directory.GetFiles("path_to_directory")
                 .Where(x => new FileInfo(x).CreationTime.Date == DateTime.Today.Date);
Run Code Online (Sandbox Code Playgroud)