65.9K
CodeProject 正在变化。 阅读更多。
Home

VB.NET GetFiles 的增强版本

starIcon
emptyStarIcon
starIcon
emptyStarIconemptyStarIconemptyStarIcon

1.87/5 (6投票s)

2008年11月21日

CPOL

1分钟阅读

viewsIcon

25867

downloadIcon

236

这是一个内联文件枚举,而不是首先构建一个数组。

引言

我的工作的一部分需要批量处理大量文件,大约 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 日。
© . All rights reserved.