Windows XP Tablet Ed.Visual Basic.NET 7.x (2002/03)Visual Basic 9 (2008)Visual Basic 8 (2005)Windows VistaWindows 2003Visual Basic 6Visual Studio 2008.NET 3.0Visual Studio 2005Windows 2000Windows XP.NET 2.0.NET 3.5中级开发Visual StudioWindows.NETVisual Basic
VB.NET GetFiles 的增强版本
这是一个内联文件枚举,而不是首先构建一个数组。
引言
我的工作的一部分需要批量处理大量文件,大约 100,000 到 1,000,000 个。 在 VB6 时代,代码会找到目录中的每个文件。 升级到 .NET 时,实现了 GetFiles
方法,但性能大幅下降。 这是一个 FindFirstFile
, FindNextFile
的实现,可以像 GetFiles
一样调用,并且还有一个额外的好处,就是返回所有文件属性。
背景
还有其他版本的实现,主要使用 C# 格式,使用 VB.NET 中目前可用的 yield return
。
此实现处理多个通配符匹配,但仅限一个源目录。
围绕 Files
类添加一个 Enumerator
类来处理多个目录很容易,但目前我不需要这样做。
Using the Code
这只是一个类模块和一个帮助文件,用于解释该类。 您只需将该类添加到您的项目中,并像使用 Microsoft 版本的 GetFiles
一样实现它。
For Each file As Files.WIN32_FIND_DATA In _
Files.GetFilesEx _
( _
"c:\", _
SYSTEM.FileIO.SearchOption.SearchAllSubDirectories, _
"*.txt,*.doc" _
)
Console.WriteLine(file.ToString)
Next
此示例将查找 C: 驱动器上的所有文本和文档文件。
关注点
与 .NET 版本的 GetFiles
不同,此版本将搜索任何子目录,并且不会因此生成错误。
历史
- 初始发布:2008 年 11 月 21 日。