我需要找到目录(及其子目录)的大小。我可以通过遍历目录树并总结文件大小等来做到这一点。互联网上有很多例子,但这是一个有点乏味和缓慢的过程,特别是在查看异常大的目录结构时。
我注意到Apple的Finder应用程序可以立即显示任何给定目录的目录大小。这意味着操作系统实时维护此信息。但是,我一直无法确定如何访问此信息。有谁知道这些信息的存储位置以及是否可以通过Objective-C应用程序检索它?
答案 0 :(得分:0)
IIRC Finder也会迭代。在过去,它曾经使用FSGetCatalogInfo(旧的文件管理器调用)来快速完成此操作。我认为现在有一个更新的POSIX调用,这是最快,最低级别的API,特别是如果你对除了大小以外的所有其他信息不感兴趣,并且真的需要超过易于维护的代码的速度。
也就是说,如果将其缓存在可公开访问的地方,可能是Spotlight。您是否检查过文件夹的聚光灯信息是否包含其大小?
PS - 确定文件大小时要记住的一件重要事情:Mac文件可以有两个“分叉”,数据分叉和资源分支(例如,如果您覆盖特定文件打开,Finder会保留信息使用另一个应用程序,而不是其文件类型的默认值,以及分配给文件的自定义图标)。因此,请确保将两个叉子的尺寸相加,否则您的测量结果将会关闭。