Objective C 中的目录大小

Posted

技术标签:

【中文标题】Objective C 中的目录大小【英文标题】:Directory Size in Objective C 【发布时间】:2011-09-28 06:57:08 【问题描述】:

由于 NSFileManager 没有返回目录大小的能力,那么获取目录大小的合适且快速的方法是什么?

【问题讨论】:

【参考方案1】:

没有快速的方法:您必须递归地请求目录层次结构中每个文件的大小。

别忘了处理特殊情况:

具有多个硬链接的文件(或 Time Machine 卷上的目录):只计算一次。 特殊文件,例如在 /dev 中找到的文件,但可以在任何地方创建。 符号链接:不要关注它们,而是计算它们的大小。

根据您的需要,您还必须在文件内容大小或磁盘上文件大小之间进行选择。

【讨论】:

【参考方案2】:

枚举文件夹内的所有目录。 “文件夹大小将=该文件夹中所有文件大小的总和。”

一些选项:

    以编程方式执行相同操作,我建议使用 opendir 和 readdir_r 枚举所有文件 - 基于其 CPU 和内存。 您可以使用 shell 运行 du 命令。

还有其他选择……这取决于你想怎么做。

【讨论】:

在不同版本的 MAC OSX 上是否有不同的行为? 我从来没有发现任何区别......即使您发现任何尊重,您也可以从开源构建 du 并将其保存在您的应用程序中以在所有操作系统中使用

以上是关于Objective C 中的目录大小的主要内容,如果未能解决你的问题,请参考以下文章

仅使用 C/C++ API 写入期间的 iOS 文件大小

计算C中嵌套目录中文件的块大小

如何在 C 中获取目录的大小?

Objective c 如何根据图像大小缩放图像视图大小(高度)

Objective C 按钮调整大小和延迟

Objective c 图像集大小不失真