在可可应用程序中检索垃圾大小作为整数



可可应用程序是否可以将垃圾的大小作为整数检索。NSTask正确的方法吗?

没有

简单的方法可以做到这一点。尽管Mac GUI提供了一个统一的垃圾箱,但垃圾箱不仅仅是一件事。每个卷可以有一个单独的垃圾箱,卷可以来来去去。

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

如果你真的想这样做,你会使用类似 -[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:] 的东西枚举所有挂载的卷,使用 CFURLGetFSRef() 将 URL 转换为 FSRef s,使用 FSGetCatalogInfo() 传递kFSCatInfoVolumeFSRef获取卷参考号whichInfo,使用 FSFindFolder() 传递kTrashFolderType查找每个卷的垃圾箱 folderType, 使用 CFURLCreateFromFSRef() 将生成的FSRef转换为 URL,使用 keys 数组中传递NSURLTotalFileAllocatedSizeKey -[NSFileManager enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:为该 URL 创建一个目录枚举器,通过该枚举器枚举获取每个项目的NSURLTotalFileAllocatedSizeKey作为NSNumber,并累积这些NSNumber-unsignedLongLongValue

实际上,使用 FSGetVolumeInfo() 枚举卷可能更容易,为 volume 传递 kFSInvalidVolumeRefNum,为 volumeIndex 传递索引,从 1 开始。你也会通过kFSVolInfoNone whichInfo.您将递增索引并重复,直到它返回nsvErr 。优点是这直接为您提供了卷参考号,因此您不必从 URL 转到FSRef再到卷参考号。缺点是这是另一个旧式 API。但是,您别无选择,只能使用这些 API,因为上述 API 中没有替代FSFindFolder()

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

相关内容

  • 没有找到相关文章

最新更新