Cocoa apis报告可用空间的值不正确,我应该使用什么?

sea*_*her 5 cocoa objective-c osx-lion

有谁知道苹果公司正在使用什么apI的Get Info面板来确定Lion的免费空间?我试图获得Apple报告的相同可用空间的所有代码都失败了,甚至Quick Look也没有显示Get Info显示的相同空间.如果我删除一堆文件并尝试读取可用空间,这似乎就会发生.

Lion上的可用空间不正确

当我使用NSFileManager - > NSFileSystemFreeSize时,我得到42918273024字节

当我使用NSURL - > NSURLVolumeAvailableCapacityKey时,我得到42918273024字节

当我使用statfs - > buffer.f_bsize*buffer.f_bfree时,我得到43180417024字节

statfs获得与Quick Look类似的结果,但我如何匹配Get Info?

mtt*_*trb 1

您可能会看到本地时间机器快照备份的结果。以下引述摘自以下 Apple 支持文章 - OS X Lion:关于便携式 Mac 上的 Time Machine 的“本地快照”

OS X Lion 中的 Time Machine 包含一项名为“本地快照”的新功能,可将您创建、修改或删除的文件副本保留在内部磁盘上。本地快照补充了常规 Time Machine 备份(存储在外部磁盘或 Time Capsule 上),为您在可能远离外部备份磁盘或 Time Capsule 并意外删除文件时提供“安全网”。

文章最后说:

注意:您可能会注意到“磁盘工具”、“Finder”和“获取信息”检查器之间的可用空间统计信息存在差异。这是预料之中的,可以安全地忽略。Finder 显示磁盘上的可用空间,而不考虑本地快照,因为本地快照将在需要时放弃其磁盘空间。

看起来您尝试过的所有测量可用磁盘空间的编程方法都给出了磁盘上的真实可用空间值,而不是通过删除本地 Time Machine 备份可以提供的空间。我怀疑像这样的命令行工具df是否也了解本地时间机器备份。