我需要在Mac OS X上获取已安装本地卷的列表。以前,Cocoa类NSWorkspace
有mountedLocalVolumePaths
method用于获取此类卷的挂载点数组。自Lion以来,现在已经弃用了这一点,文档中没有提示我们应该使用什么。
我发现提供此信息的唯一其他特定于Apple的API是来自CoreServices.framework的FSGetVolumeInfo
function。如果为卷参数传递kFSInvalidVolumeRefNum
,为 volumeIndex 传递1..N,则枚举已装入的卷。它通过 volumeName 输出参数返回卷名(作为HFSUniStr255
),通过 rootDirectory 输出参数作为FSRef
返回挂载点,然后可以使用CFURLCreateFromFSRef()
将其转换为网址。
这似乎有点复杂且不必要的低级别。
还有BSD级函数getfsstat()
和getmntinfo()
,它们都发出statfs
个结构数组。 API似乎比核心服务版本更健全。
我应该使用更高级别的替代品吗?
答案 0 :(得分:8)
有一个更简单的替代品,比旧方法更合乎逻辑:NSFileManager's mountedVolumeURLsIncludingResourceValuesForKeys:options:
method。