FSGetVolumeInfo是NSWorkspace不推荐使用的installedLocalVolumePaths方法的推荐替代方法吗?

pmd*_*mdj 4 macos cocoa core-services

我需要在Mac OS X上获取已安装本地卷的列表.以前,Cocoa类NSWorkspace有一个获取此类卷的挂载点数组的mountedLocalVolumePaths方法.从Lion开始,现在已经弃用了这个,在文档中没有提示我们应该使用什么.

我发现提供此信息的唯一其他Apple特定API是CoreServices.framework中的FSGetVolumeInfo函数.如果你通过此列举了已安装卷kFSInvalidVolumeRefNum参数和1..1的volumeIndex.它HFSUniStr255通过volumeName输出参数返回卷名(作为a ),通过rootDirectory输出参数返回挂载点作为a FSRef,然后可以使用转换为URL CFURLCreateFromFSRef().

这似乎有点复杂和不必要的低级别.

也存在BSD级的功能,getfsstat()并且getmntinfo()其中两个发射的阵列statfs结构.API似乎比核心服务版本更健全.

我应该使用更高级别的替代品吗?

Pet*_*sey 8

有一个更简单的替换,在一个比旧方法更合乎逻辑的地方:NSFileManager的mountedVolumeURLsIncludingResourceValuesForKeys:options:方法.