Objective c 如何以编程方式获取mac的存储容量?

Objective c 如何以编程方式获取mac的存储容量?,objective-c,macos,cocoa,storage,Objective C,Macos,Cocoa,Storage,如何获得Cocoa中的总容量、可用空间和可用空间 如屏幕截图所示,我希望在macOS的Cocoa应用程序中以编程方式实现这一点 使用-[NSFileManager mountedvolumeurlisincludingresourcevaluesforkeys:options:][/code>获取卷的NSURLs。对于属性键,请使用@[nsurvolumeToalCapacityKey,nsurvolumeAvailableCapacityKey]。您可能希望在选项中使用nsvolumeenum

如何获得Cocoa中的总容量、可用空间和可用空间

如屏幕截图所示,我希望在macOS的Cocoa应用程序中以编程方式实现这一点


使用
-[NSFileManager mountedvolumeurlisincludingresourcevaluesforkeys:options:][/code>获取卷的
NSURL
s。对于
属性键
,请使用
@[nsurvolumeToalCapacityKey,nsurvolumeAvailableCapacityKey]
。您可能希望在选项中使用
nsvolumeenumeriorityskiphiddenvolumes

然后,对于每个URL,使用相同的属性键调用
-[NSURL resourcesvaluesforkeys:error://code>。这将为您提供一个字典,其键为
nsurlVolumeToalCapacityKey
NSURLVolumeAvailableCapacityKey
,其值为
NSNumber
对象,包含相应的量,以字节为单位

如果需要格式化这些值以供显示,请使用
NSByteCountFormatter

我从

因此,我张贴了我使用该引用所做的事情

    NSError *error;

    NSFileManager *fm = [NSFileManager defaultManager];
    NSDictionary *attr = [fm attributesOfFileSystemForPath:@"/"
                                                     error:&error];
    NSLog(@"Attr: %@", attr);
    float totalsizeGb = [[attr objectForKey:NSFileSystemSize]floatValue] / 1000000000;
    NSLog(@" size in GB %.2f",totalsizeGb);

    float freesizeGb = [[attr objectForKey:NSFileSystemFreeSize]floatValue] / 1000000000;
    NSLog(@" size in GB %.2f",freesizeGb);
希望这对其他人也有帮助


感谢…

statfs(2)提供基于C的解决方案。谢谢你的回复。你能告诉我通过代码获得的mac的总容量,因为我有点新的mac开发。谢谢…这是我使用NSURL和NSByteCountFormatter的部分解决方案:
NSDictionary*resources=[url resourceValuesForKeys:keys error:&error];NSLog(@“NSURL资源:%@”,资源);如果([url getResourceValue:&availableSpace forKey:NSURLVolumeAvailableCapacityKey错误:&error]==YES){NSString*formattedAvailableSpace=[NSByteCountFormatter stringFromByteCount:[availableSpace LongValue]countStyle:NSByteCountFormatterCountStyleFile];NSLog(@“availableSpace:%@formattedAvailableSpace:%@),可用空间,格式化可用空间);}