【发布时间】:2014-06-29 13:19:20
【问题描述】:
我正在处理大量文件,因此,我不想等到整个搜索完成后才返回数组。所以我不想使用 Directory.GetFiles()
根据this answer ,我需要使用 EnumerateFiles() 才能在搜索过程中获得结果。但是,我使用的是 NET2.0,这个功能似乎是从 NET 4.0 开始引入的
Net 2.0 中的 EnumerateFiles() 等价物是什么?
任何提示将不胜感激
【问题讨论】:
-
没有等价物。但如果处理复杂且昂贵,
Directory.GetFiles是错误的优化位置。您可以优化处理方法,也可以使用GetFiles加载所有路径,然后一个接一个地处理,例如每10个文件。 -
你认为这个答案是我需要的stackoverflow.com/a/929418/2340370 吗?
-
它仍然首先使用
Directory.GetFiles(path),即使迭代器一个接一个地产生。所以不,这只是伪造具有大量文件的单个目录的延迟执行。 -
一个目录下有那么多文件让
GetFiles变得昂贵吗?还是只是因为您搜索子目录而昂贵?在后一种情况下,您可以简单地自己编写递归下降,并且您只会在开始搜索之前产生浅搜索的成本。一种实现是Enumerating Files Throwing Exception -
如果这些文件在同一个目录下,那么你可能需要看一下winapi方向:
FindFirstFile,FindNextFile等。