如何使用 APFS 在 iOS 10.3 上获取目录的大小?
Posted
技术标签:
【中文标题】如何使用 APFS 在 iOS 10.3 上获取目录的大小?【英文标题】:How can I get the size of a directory on iOS 10.3 with APFS? 【发布时间】:2017-08-24 15:43:02 【问题描述】:在 WWDC 2016 上宣布的 APFS 的一个好处是能够非常快速地获取目录的大小,而不必遍历整个文件夹结构。给出的演示是 Finder 中的 Get Info 窗口,无需异步计算目录的大小。
我有一个 ios 应用程序,我需要在其中显示目录的文件大小。现在我递归地做,总结所有子目录中所有文件的大小。但是现在 APFS 已经随 iOS 10.3 一起发布,我想利用新的文件系统更有效地完成它。某处有这个API吗?我没有在NSFileManager
documentation 中看到它。现在我使用attributesOfItemAtPath
和NSFileSize
键。
【问题讨论】:
据我所知,APFS 在该级别应该是透明的。你想使用低级函数之类的东西吗? @MertBuran 文件系统是透明的是有意义的,但它必须在某处影响某些 API 的行为。这只是低级吗? 如果它是透明的则意味着文件系统 API 不会改变,否则它不会是透明的 :)diskutil
的 API 有一些变化,现在你有 diskutil apfs
命令,但我想NSFileManager
级别不会有变化。如果 APFS 优化了文件大小计算,那么您已经拥有了。
@MertBuran 从 WWDC 演示文稿中我的理解是,文件夹的大小实际上与文件夹一起存储。所以我想问题变成了如何正确询问文件夹的大小?
@TomHamming 我的第一个猜测是您当前的方法,在目录本身上查找该值而不是递归扫描。那不行吗?
【参考方案1】:
我在 WWDC 2018 的 APFS 实验室中提出了这个问题,它将通过一个名为 dirstat_np
的 API 完成,但它目前是一个私有 API,不能供公众使用。它可能会在某个时候作为公共 API 提供,但没有任何承诺。我要归档雷达。
【讨论】:
雷达编号是多少?你把它发布到 Open Radar 了吗? opensource.apple.com/source/Libc/Libc-1244.1.7/libdarwin/…以上是关于如何使用 APFS 在 iOS 10.3 上获取目录的大小?的主要内容,如果未能解决你的问题,请参考以下文章