gpt4 book ai didi

xcode - 在 cocoa 应用程序中以 int 形式检索垃圾箱大小

转载 作者:行者123 更新时间:2023-12-03 17:35:28 25 4
gpt4 key购买 nike

cocoa 应用程序是否可以以 int 形式检索垃圾的大小。 NSTask 是执行此操作的正确方法吗?

最佳答案

没有简单的方法可以做到这一点。虽然 Mac GUI 提供了统一的垃圾箱,但垃圾箱并不只有一种。每个卷都可以有一个单独的垃圾箱,并且卷可以来来去去。

此外,计算文件夹内容的大小可能非常耗时,因此这似乎不是一个好主意。

如果您确实想要这样做,您可以使用 -[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:] 之类的内容枚举所有已安装的卷。 ,将 URL 转换为 FSRef使用CFURLGetFSRef() ,从 FSRef 获取卷引用号使用FSGetCatalogInfo()路过kFSCatInfoVolume对于 whichInfo ,使用 FSFindFolder() 查找每个卷的垃圾箱路过kTrashFolderType对于 folderType ,转换结果FSRef使用 CFURLCreateFromFSRef() 到 URL ,使用 -[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler: 为该 URL 创建目录枚举器路过NSURLTotalFileAllocatedSizeKeykeys数组,通过该枚举器进行枚举,获取每个项目的 NSURLTotalFileAllocatedSizeKey作为NSNumber ,并累积-unsignedLongLongValue其中NSNumber s。

使用 FSGetVolumeInfo() 枚举卷实际上可能更容易,路过kFSInvalidVolumeRefNum对于 volume和一个索引,从 1 开始,volumeIndex 。您还可以通过 kFSVolInfoNone对于 whichInfo 。您可以增加索引并重复,直到返回 nsvErr 。优点是,这可以直接为您提供卷引用号,因此您不必从 URL 转到 FSRef到卷引用号。缺点是这是一种比较旧式的 API。但是,您别无选择,只能使用这些 API,因为 FSFindFolder() 无可替代。在上面。

无论如何,当您枚举卷获取其垃圾文件夹时,您必须准备好遇到没有垃圾文件夹的卷。例如,网络安装的卷通常不会。

关于xcode - 在 cocoa 应用程序中以 int 形式检索垃圾箱大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11374202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com