disk - cocoa 如何获得已经安装的不可安装磁盘

标签 disk mount nsworkspace

NSWorkspaceDidMountNotification 可以很好地获取刚刚安装的磁盘的信息。 但是如何在我的应用程序启动之前获取已经安装的磁盘的信息?

命令行:“diskutil list”和“diskutil info/”有效,但那里应该有一个简单的编程方法。

“DiskArbitration”或“VolumeToBSDNode example”的搜索结果不工作,IOkit 困难。

顺便说一句,有人推荐使用这个吗? [NSWorkspace getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:]

最佳答案

[NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]怎么样? ?

编辑:这是一段代码,说明如何使用它来获取可移动驱动器及其卷名。

NSArray *keys = [NSArray arrayWithObjects:NSURLVolumeNameKey, NSURLVolumeIsRemovableKey, nil];
NSArray *urls = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:keys options:0];
for (NSURL *url in urls) {
  NSError *error;
  NSNumber *isRemovable;
  NSString *volumeName;
  [url getResourceValue:&isRemovable forKey:NSURLVolumeIsRemovableKey error:&error];
  if ([isRemovable boolValue]) {
    [url getResourceValue:&volumeName forKey:NSURLVolumeNameKey error:&error];
    NSLog(@"%@", volumeName);
  }
}

关于disk - cocoa 如何获得已经安装的不可安装磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7828783/

相关文章:

c++ - 在 Linux 上增加文件需要任何费用吗?

docker - Gitlab CI : mount Apache service Docker DocumentRoot directory into main Docker

macos - 如何以编程方式更改系统范围的桌面图片?

swift - NSWorkspace setDesktopImageURL 适合屏幕

linux - 将光盘 (HD) 路径加载到内存 (Minix)

linux - 测量读/写磁盘利用率

c - C (C89) 中十进制数的有效磁盘存储

events - 如何在 Svelte 组件安装之前获取数据?

windows - 如何卸载(关闭挂载)sshfs Windows?