簡體   English   中英

在可可應用中將垃圾大小作為int檢索

[英]Retrieve Trash size as an int in cocoa app

可可應用程序是否有可能以int形式獲取垃圾的大小。 NSTask是執行此NSTask的正確方法嗎?

沒有簡單的方法可以做到這一點。 盡管Mac GUI提供了統一的廢紙,,但不僅僅是一件事就是廢紙one。 每個卷可以有一個單獨的垃圾,卷可以來回移動。

另外,計算文件夾內容的大小可能會非常耗時,因此這似乎不是一個好主意。

如果你真的想這樣做,你會枚舉所有使用類似的已安裝卷-[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:] ,轉換網址FSRef S使用CFURLGetFSRef()您可以通過卷參考號碼FSRef使用FSGetCatalogInfo()傳遞kFSCatInfoVolumewhichInfo ,找到使用每個卷的垃圾箱FSFindFolder()傳遞kTrashFolderTypefolderType ,得到的轉換FSRef到使用URL CFURLCreateFromFSRef()創建一個目錄枚舉使用該URL -[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:keys數組中傳遞NSURLTotalFileAllocatedSizeKey ,通過該枚舉器枚舉,將每一項的NSURLTotalFileAllocatedSizeKey作為NSNumber ,並累積這些NSNumber-unsignedLongLongValue

它實際上可能是更容易使用枚舉的卷FSGetVolumeInfo()傳遞kFSInvalidVolumeRefNumvolume和索引從1開始,對於volumeIndex 您還kFSVolInfoNonewhichInfo傳遞whichInfo 您將增加索引並重復直到它返回nsvErr 優點是,這可以直接為您提供卷參考號,因此您不必從URL到FSRef到卷參考號。 缺點是這是另一種舊式API。 但是,您別無選擇,只能使用這些API,因為上述內容無法替代FSFindFolder()

無論如何,當您枚舉卷獲得其廢紙folders文件夾時,您必須准備好遇到沒有廢紙folders文件夾的卷。 例如,網絡安裝的卷通常沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM