5

有谁知道 Apple 使用什么 api 来确定 Lion 中的可用空间的 Get Info 面板?我试图获得与 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?

4

2 回答 2

1

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

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

文章最后说:

注意:您可能会注意到“磁盘工具”、“Finder”和“获取信息”检查器之间的可用空间统计数据有所不同。这是意料之中的,可以放心地忽略。Finder 在不考虑本地快照的情况下显示磁盘上的可用空间,因为本地快照会在需要时放弃其磁盘空间。

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

于 2012-08-26T09:42:27.370 回答
0

这是一种解决方法,不是真正的 api,但是好的旧 unix 命令df -H将为您提供与“获取信息”面板中相同的信息,您只需要选择磁盘行并解析输出即可。

df 程序还有许多您可能想要探索的其他选项。在这种特殊情况下,-H开关告诉程序以人类可读的格式输出数字并使用以 10 为底的大小。

在这里查看如何从应用程序中运行命令行并在程序中获取输出:Execute a terminal command from a Cocoa app

我相信两者的基础df和获取信息面板很可能是同一件事。

于 2012-08-26T09:37:59.270 回答