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