从目录中获取文件列表,但仅按日期过滤子集

时间:2011-11-06 20:41:57

标签: c# directory

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

我问的是因为使用

获取所有文件
di.GetFiles("*.wma")

持续10秒或更长时间,我必须反复使用它来扫描新文件。

FileSystemWatcher是不可能的,因为我了解到没有它就会好得多。

编辑:

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

2 个答案:

答案 0 :(得分:0)

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

您可能想要调查windows search API的使用 - 据我所知,它允许对搜索进行日期限制,因此应该合适。

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

答案 1 :(得分:0)

如果DirectoryInfo对您来说不够快,而您只是查看几个元数据,那么您可能会更快地读取所有文件一次,收集所需的元数据,然后存储它在词典集合的内存中,所以你可以执行你想要的任何操作。