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 に答える