cocoa如何获取已安装的不可安装磁盘

发布于 2024-12-11 01:43:59 字数 375 浏览 1 评论 0原文

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

命令行:“diskutil list”和“diskutil info /”可以工作,但应该有一个简单的编程方法。

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

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

NSWorkspaceDidMountNotification works well to get the information of just mounted disk.
But how can I get the information of already mounted disks before my app start?

command line: "diskutil list" and "diskutil info /" works but there should be a simple programmatically method there.

searched result of "DiskArbitration" or "VolumeToBSDNode example" don't work, IOkit difficult.

BTW, anyone recommend of using this?
[NSWorkspace getFileSystemInfoForPath:isRemovable:isWritable:isUnmountable:description:type:]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

错爱 2024-12-18 01:43:59

[NSFileManager MountedVolumeURLsInclusionResourceValuesForKeys: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);
  }
}

How about [NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]?

Edit: Here's a snippet of code for how to use this to get removable drives and their volume names.

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);
  }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文