C# 正在从目录中提取文件列表,但仅按日期筛选子集

C# 正在从目录中提取文件列表,但仅按日期筛选子集,c#,directory,C#,Directory,我是否可以使用DirectoryInfo,甚至使用一些外部API,从按创建日期筛选的大目录(10万个文件)中获取文件(例如,仅获取今天创建的文件) 我这样问是因为使用 di.GetFiles("*.wma") 持续10秒或更长时间,我必须反复使用它来扫描新文件 FileSystemWatcher是不可能的,因为我了解到,没有它的人会做得更好 编辑: 内存不是问题,情况是我必须知道在给定时刻目录中的文件是什么。我无法减少文件的数量,但如果它像广告中所宣传的那样工作,那么FindFirstFile

我是否可以使用DirectoryInfo,甚至使用一些外部API,从按创建日期筛选的大目录(10万个文件)中获取文件(例如,仅获取今天创建的文件)

我这样问是因为使用

di.GetFiles("*.wma")
持续10秒或更长时间,我必须反复使用它来扫描新文件

FileSystemWatcher
是不可能的,因为我了解到,没有它的人会做得更好

编辑:


内存不是问题,情况是我必须知道在给定时刻目录中的文件是什么。我无法减少文件的数量,但如果它像广告中所宣传的那样工作,那么
FindFirstFileEx
可能是某种解决方案。

而不是
GetFiles
尝试使用
EnumerateFiles
-两者都没有日期过滤器,但是枚举版本应该会减少内存压力,因为在迭代期间一次只能检索一个结果

您可能想调查API的使用情况——据我所知,它允许对搜索进行日期限制,因此应该是合适的


真正的解决方案是不要在一个目录中有这么多的文件。

如果DirectoryInfo对您来说不够快,而您只需要查看几段元数据,那么一次读取所有文件,收集所需的元数据,然后将其存储在字典集合的内存中,可能会更快,所以你可以在上面做任何你想做的事