거기에 몇 가지 다른 방법으로 열거된 볼륨,OS X 에서 각각 다른 설정의 일으킬 수 있습니다.가장 높은(고 쉬운)수준에 사용할 수 있습니다 NSFileManager 의 mountedVolumeURLsIncludingResourceValuesForKeys:options:
.여기에 약자를 들어:
NSArray *urls = [[NSFileManager defaultManager] mountedVolumeURLsIncludingResourceValuesForKeys:@[NSURLVolumeNameKey] options:0];
for (NSURL *url in urls) {
NSLog(@"Volume mounted at: %@", [url path]);
}
다음 옵션은 다시 우리를 C 영토-그리고 당신은 너무 가까이 있었다 원본 접근 방식이다.OS X(BSD),없 getmntent()
;대신에,거기에 getmntinfo()
, 는 매우 비슷하다.목록된 볼륨을 통해 getmntinfo()
,다음을 수행할 수 있습니다:
struct statfs* mounts;
int num_mounts = getmntinfo(&mounts, MNT_WAIT);
if (num_mounts < 0) {
// do something with the error
}
for (int i = 0; i < num_mounts; i++) {
NSLog(@"Disk type '%s' mounted at: %s", mounts[i].f_fstypename, mounts[i].f_mntonname);
}
내가 사용했던 이들 모두 Api side-by-side 릴리스 이후의 10.6. getmntinfo()
은 항상보다 더 완벽한 [NSFileManager mountedVolumeURLsIncludingResourceValuesForKeys:options:]
:후자를 필터링합니다 /dev
과 다른 파일시스템는 당신은 수도 있고 싶지 않을 수도 있습니다.그것은 일반적으로 신뢰할 수 있는,그러나,디스크에 대한 연결의 시스템입니다.
목적 뒤에 DiskArbitration 프레임워크가 다른으로,당신은 나타났습니다.DiskArbitration 에 대해 모니터링하고 관리하는 디스크 자산입니다.와 함께,당신이 얻을 수있는 호출될 때마다 새로운 디스크가 장착되거나 수 있습니다.을 관리할 수도 있습니다 그들 디스크 이름을 변경하여,설치,해제,또는 그들을 분출뿐만 아니라,삽입하에서 자신의 마운트/마운트 프로세스 및 잠재적으로 중단을 요청합니다.하지만,당신이 지적으로,그것은 인터페이스를 제공하지 않 목록에 대한 기존의 디스크가 있습니다.일단 당신이 당신의 목록된 볼륨을 다한 다음 정지(따라 물론,이는 목록!).