在 vb.net 或 C# 中,是否可以从文件夹中检索一定数量的文件(例如 100 个)而不是扫描所有文件(例如 1000000)并全部检索它们?
如果是,那么实施是什么?
非常感谢
在 .Net Framework 4.0 及更高版本中,您可以使用DirectoryInfo.EnumerateFiles并获取任意数量的文件。此方法在返回之前不需要对目录进行全面扫描。
由于您需要一个适用于版本 4 之前的 .NET Framework 版本的解决方案,因此唯一想到的是 WinAPI 的FindFirstFile和FindNextFile函数。
看看这个EnumerateFiles
基于这些 WinAPI 函数的实现。
foreach (var file in new DirectoryInfo("c:/mydirectory").EnumerateFiles())
{
//do stuff
}
我猜你应该首先调用GetFiles方法来检索与目录相关的所有文件的路径(文件尚未读取),然后从集合中读取前 100 个文件(例如,使用 StreamReader 等)。
如果框架低于 4,这将起作用。