【发布时间】: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 我的第一个猜测是您当前的方法,在目录本身上查找该值而不是递归扫描。那不行吗?
标签: ios nsfilemanager apfs