【发布时间】:2011-02-28 02:18:31
【问题描述】:
使用 C#,我正在查找目录的总大小。逻辑是这样的:获取文件夹内的文件。总结总规模。查找是否有子目录。然后进行递归搜索。
我也尝试了另一种方法:使用 FSO (obj.GetFolder(path).Size)。这两种方法在时间上没有太大差异。
现在的问题是,我在一个特定文件夹中有数万个文件,并且至少需要 2 分钟才能找到文件夹大小。此外,如果我再次运行该程序,它会很快发生(5 秒)。我认为 Windows 正在缓存文件大小。
有什么办法可以缩短我第一次运行程序所用的时间??
【问题讨论】:
-
你的方法比“explorer”第一次做这个要慢吗?
-
我认为这很正常。您可能会使用较低级别的 API 在文件系统级别进行递归,但我怀疑这会明显更快。
-
@Marc,不,没有太大的不同。另外,我尝试过 WinApi,但差别不大。
-
使用文件夹分组选项对文件系统进行碎片整理将加快初始搜索速度; AFAIK,不,没有加速方法;您可以使用 SSD 驱动器...
-
@MarcGravell 你能在你的机器上做这个,让我知道它是否有效吗?
标签: c# windows winforms winapi filesystemobject