加载一定数量的文件而不是扫描并加载目录中的所有文件

时间:2012-12-04 12:51:11

标签: c# vb.net file directory

在vb.net或C#中,是否可以检索一定数量的文件,例如100从文件夹而不是扫描所有文件(例如1000000)并检索所有文件?

如果是,那么实施是什么?

非常感谢

4 个答案:

答案 0 :(得分:2)

在.Net Framework 4.0及更高版本中,您可以使用DirectoryInfo.EnumerateFiles并根据需要获取尽可能多的文件。此方法在返回之前不需要对目录进行完全扫描。

答案 1 :(得分:1)

由于您需要一个适用于版本4之前的.NET Framework版本的解决方案,因此唯一需要考虑的是WinAPI的FindFirstFileFindNextFile函数。

根据这些WinAPI函数查看EnumerateFiles的此实现。

答案 2 :(得分:0)

foreach (var file in new DirectoryInfo("c:/mydirectory").EnumerateFiles())
{
    //do stuff
}

答案 3 :(得分:0)

我猜你应该首先调用GetFiles方法来检索与目录相关的所有文件的路径(文件还没有读过),然后从集合中读取前100个文件(例如,使用StreamReader等)。 / p>

如果框架低于4,这将有效。