5

我需要在 Mac OS X 上获取已挂载的本地卷的列表。以前,Cocoa 类NSWorkspace有一种mountedLocalVolumePaths方法可以获取此类卷的挂载点数组。自 Lion 以来,现在已弃用,文档中没有提示我们应该改用什么。

我发现提供此信息的唯一其他 Apple 特定 API 是 CoreServices.framework 中的FSGetVolumeInfo函数。如果您kFSInvalidVolumeRefNumvolume参数传递并且为volumeIndex传递 1..N,这将枚举已安装的卷。它通过volumeName输出参数返回卷名(作为 a HFSUniStr255),通过rootDirectory输出参数作为 a返回挂载点,然后可以使用.FSRefCFURLCreateFromFSRef()

这似乎有点令人费解且不必要的低级。

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

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

4

1 回答 1

8

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

于 2012-06-01T15:39:59.600 回答