繁体   English   中英

如何查找Mac上是否确实存在已安装的驱动器

[英]How to find if a mounted drive really exists on Mac

我实际想要实现的是找出我从网络安装的驱动器何时断开连接。 我用一个非常简单的方法开始,我用过:

提高::文件系统::存在

在驱动器的安装路径上(我们可以在/ Volumes /中找到)。 例如,对于计算机上的驱动器:smb:// XYZ /驱动器安装后,我可以看到它像:/ Volumes / drive,后者是我使用boost :: filesystem :: exists的驱动器,

所以我希望一旦我断开网络连接,就会立即清除/ Volumes中的挂载卷,一切都会正常工作。

但是,后来我意识到在网络断开连接上,OSX需要永远清除/ Volumes目录中的驱动器。

是否有苹果API可以判断/ Volumes中出现的已计量量是否为有效量。

提前致谢。

NSFileManager上有一个方法,可以让您轻松查看已装入的卷:

- (NSArray*) mountedVolumeURLsIncludingResourceValuesForKeys:option - 返回一组URL,用于标识计算机上可用的已装入卷。

我不知道这是如何解决陷入困境的坐骑。 您还需要确定这些已装入的卷是网络卷还是磁盘映像。

如果您希望在卷来来往时收到通知,则可以使用File System Events API 这是一个更低级别,但您基本上可以要求它' /Volumes/*下的结构更改时通知我。

你想要NSWorkspace通知

  • NSWorkspaceDidRenameVolumeNotification
  • NSWorkspaceDidMountNotification
  • NSWorkspaceWillUnmountNotification
  • NSWorkspaceDidUnmountNotification

最后三个通知在userInfo字典中包含@"NSDevicePath"键。 虽然WillUnmount如果设备被强行拆除,不发送, DidUnmount一样。 使用这两者的组合,您可以获得适当的警告,以便“理想卸载”网络卷以处理理想情况下的事情,但在所有情况下,依靠DidUnmount告诉我音量消失,我从来没有遇到任何实际问题。 我在自2003年以来一直在推出的应用程序中运输代码时使用此功能。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM