2

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

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

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

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

4

1 回答 1

6

怎么样[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);
  }
}
于 2012-08-09T04:06:50.877 回答