在目录中搜索大量文件?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案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,您可以使用它来搜索其索引中的任何文件,它还支持映射网络驱动器。

【讨论】:

以上是关于在目录中搜索大量文件?的主要内容,如果未能解决你的问题,请参考以下文章

Gradle 在项目目录中创建大量文件

文件搜索命令

在内部存储最佳实践中保存大量图像

/var/spool/clientmqueue/目录下存在大量文件

如何清空具有大量/大量文件的 linux 目录? [复制]

搜索大量短字符串