【问题标题】:Searching directories for tons of files?在目录中搜索大量文件?
【发布时间】:2010-09-05 10:25:19
【问题描述】:

我使用的是 MSVE,并且我有自己的图块,我在顶部的图层中显示。问题是,它们有很多,而且它们在网络服务器上。在某些目录中,大约有 30,000 多个文件。最初我调用了 Directory.GetFiles,但是一旦我开始在伪真实环境中进行测试,它就会超时。

以编程方式列出和迭代这么多文件的最佳方法是什么?

编辑:我的同事建议使用 MS 索引服务。有没有人尝试过这种方法,它(如何)奏效了?

【问题讨论】:

    标签: c# directory file-management


    【解决方案1】:

    我过去曾在 SAN 系统上工作过,其电话录音存在单个文件夹中文件数量的问题 - 该系统在接近 5,000 个的地方变得无法使用(在 Windows 2000 Advanced Server 上,应用程序在 C#.Net 1.1)- 我们想出的唯一明智的解决方案是更改文件夹结构,以便有更合理的文件数量。有趣的是,Explorer 也会超时!

    我们提出的约定是将结构分解为年、月和日的结构 - 但这取决于您的系统以及您是否可以控制目录结构...

    【讨论】:

    • (我现在在一家新公司,但我确实记得这个项目的部分内容。)问题是,AFAIK,MSVE 有一个它所期望的特定文件夹结构 - 以及一层的所有内容进入一个文件夹。我们没有深入了解它是否能够聚合多个文件夹,以便 MSVE 可以查看所有文件夹,或者查看特定级别的特定文件夹。
    【解决方案2】:

    一定要把它们分开。也就是说,尽可能远离索引服务。

    【讨论】:

    • 幸运的是,我们从来没有尝试过使用索引服务。而我所在的团队现在只剩下一个人了。所以我认为项目的这一部分已经在优先级列表中下降了。
    【解决方案3】:

    没有。 .NET 依赖于底层的 Windows API 调用,这些调用本身真的非常讨厌这么多文件。

    正如罗尼所说:把他们分开。

    【讨论】:

      【解决方案4】:

      你可以使用 DOS 吗?

      DIR /s/b > Files.txt
      

      【讨论】:

        【解决方案5】:

        您也可以查看自己为文件编制索引,或者让第三方应用程序(如 google desktop 或 copernic)来执行此操作,然后与他们的索引进行交互。我知道 copernic 有一个 API,您可以使用它来搜索其索引中的任何文件,它还支持映射网络驱动器。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-04-26
          • 2015-06-07
          • 1970-01-01
          • 2016-02-29
          • 1970-01-01
          • 1970-01-01
          • 2016-07-12
          相关资源
          最近更新 更多