2012-07-22 46 views
5

有誰知道蘋果公司正在使用它的Get Info面板來確定Lion中的可用空間嗎?我試圖獲得與Apple報告的可用空間相同的所有代碼都失敗了,甚至Quick Look也沒有顯示Get Info顯示的空間。這似乎發生如果我刪除一堆文件並嘗試讀取可用空間。Cocoa apis報告可用空間的值不正確,我應該使用什麼?

Incorrect free space on Lion

當我使用的NSFileManager - > NSFileSystemFreeSize我得到42918273024個字節

當我使用NSURL - > NSURLVolumeAvailableCapacityKey我得到42918273024字節

當我使用的statfs - > buffer.f_bsize *緩衝區.f_bfree我得到43180417024字節

statfs獲得與Quick Look類似的結果,但我如何匹配Get Info?

+0

它可能是基數2和基數10計算之間的差異。我認爲蘋果公司在SL系統中的存儲空間系統基礎上改爲10,但我不知道爲什麼他們會那麼遙遠。它們可能會因交換,緩存和屏幕截圖而略有不同 – 2012-07-23 20:16:17

+0

我不記得在兩者之間轉換的公式。 – 2012-07-23 20:17:06

+1

山獅添加NSByteCountFormatter可能會幫助你。請參閱https://developer.apple.com/library/mac///#/library/mac/documentation/Foundation/Reference/NSByteCountFormatter_Class/Reference/Reference.html – 2012-08-02 03:11:51

回答

1

您可能會看到本地時間機器快照備份的結果。下面的引號是從下面的Apple支持文章 - OS X Lion: About Time Machine's "local snapshots" on portable Macs:OS X Lion中

時光機包括一個名爲「本地 快照」的新功能,保持文件的副本創建,修改或刪除 內部磁盤。本地快照補充定期時間機器 備份(存儲在您的外部磁盤或Time Capsule中),當您可能遠離外部備份磁盤或Time Capsule並意外刪除文件時, 給您一個「安全網絡」。

文章結束說:

注:您可能會注意到在磁盤工具,搜索之間的可用空間統計數據的差異,以及獲取信息督察。這是預期的 ,可以安全地忽略。 Finder會在磁盤上顯示可用的 空間而不會計算本地快照,因爲 本地快照將根據需要放棄其磁盤空間。

看起來你已經嘗試過給磁盤,而不是可以通過刪除本地Time Machine備份來提供空間上的真正的自由空間值測量可用磁盤空間的所有編程方法。我懷疑df等命令行工具也知道本地時間機器備份。

0

這是一個解決方法,不是一個真正的API,但良好的舊UNIX命令df -H將爲您提供與'get info'面板中相同的信息,您只需選擇磁盤行並解析輸出。

該df程序有許多其他選項,您可能想要探索。在這種情況下,-H開關告訴程序以可讀格式吐出數字並使用基數10的大小。

到這裏看看如何從一個應用程序中運行命令行,讓你的程序中輸出:Execute a terminal command from a Cocoa app

我相信無論df和獲取信息面板的基礎很可能是一樣。

相關問題