通过文件结构进行多次迭代(C#)

时间:2011-08-31 15:58:53

标签: c# file-structure

我正在编写一个程序,它使用简单的循环和递归多次遍历文件系统。

问题在于,因为我正在多次迭代,所以需要很长时间,因为(我猜)硬盘只能以一定的速度工作。

有没有办法优化这个过程?也许通过迭代一次,将所有相关信息保存在集合中,然后在需要时引用该集合?

我知道我可以像这样缓存我的结果,但我完全不知道如何去做。

编辑:

我试图从给定目录中获取三条主要信息:

  • 目录的大小(该目录中每个文件大小的总和)
  • 目录中的文件数
  • 目录中的文件夹数量

以上所有内容也包括子目录。目前,我正在执行给定目录的迭代以获取每条信息,即每个目录三次迭代。

我的输出基本上是一个电子表格,如下所示:

Program Output

2 个答案:

答案 0 :(得分:1)

是否可以采取任何措施来最大限度地减少硬盘I / O,从而提高性能。我还建议使用秒表并测量所需的时间,以便了解您的改进对速度的影响。

答案 1 :(得分:1)

要提高性能,您可以直接访问NTFS文件系统的主文件表(MFT)。 MSDN社交论坛上有一个很好的代码示例。 似乎访问MFT的速度比使用FindFirst / FindNext文件枚举文件系统快大约10倍。

希望,这有帮助。