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

时间:2012-06-01 14:22:40

标签: macos cocoa core-services

我需要在Mac OS X上获取已安装本地卷的列表。以前,Cocoa类NSWorkspacemountedLocalVolumePaths method用于获取此类卷的挂载点数组。自Lion以来,现在已经弃用了这一点,文档中没有提示我们应该使用什么。

我发现提供此信息的唯一其他特定于Apple的API是来自CoreServices.framework的FSGetVolumeInfo function。如果为参数传递kFSInvalidVolumeRefNum,为 volumeIndex 传递1..N,则枚举已装入的卷。它通过 volumeName 输出参数返回卷名(作为HFSUniStr255),通过 rootDirectory 输出参数作为FSRef返回挂载点,然后可以使用CFURLCreateFromFSRef()将其转换为网址。

这似乎有点复杂且不必要的低级别。

还有BSD级函数getfsstat()getmntinfo(),它们都发出statfs个结构数组。 API似乎比核心服务版本更健全。

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

1 个答案:

答案 0 :(得分:8)

有一个更简单的替代品,比旧方法更合乎逻辑:NSFileManager's mountedVolumeURLsIncludingResourceValuesForKeys:options: method