我可以使用DirectoryInfo甚至是一些外部API,从创建日期过滤的LARGE目录(10万个文件)中获取文件(例如,仅获取今天创建的文件)。
我问的是因为使用
获取所有文件di.GetFiles("*.wma")
持续10秒或更长时间,我必须反复使用它来扫描新文件。
FileSystemWatcher
是不可能的,因为我了解到没有它就会好得多。
编辑:
内存不是问题,情况是我必须知道给定时刻目录中的文件是什么。我无法减少文件数量,但似乎FindFirstFileEx
可能是某种解决方案,如果它像宣传的那样工作。
答案 0 :(得分:0)
而不是GetFiles
尝试使用EnumerateFiles
- 两者都没有日期过滤器,但枚举版本应该会减少内存压力,因为在迭代过程中一次只能检索一个结果。
您可能想要调查windows search API的使用 - 据我所知,它允许对搜索进行日期限制,因此应该合适。
真正的解决方案是在一个目录中没有这么多文件。
答案 1 :(得分:0)
如果DirectoryInfo对您来说不够快,而您只是查看几个元数据,那么您可能会更快地读取所有文件一次,收集所需的元数据,然后存储它在词典集合的内存中,所以你可以执行你想要的任何操作。