我使用此方法获取磁盘上的可用空间,从一些研究后找到的代码中提取。
float freeSpace = -1.0f;
NSError* error = nil;
NSArray* paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSDictionary* dictionary = [[NSFileManager defaultManager] attributesOfFileSystemForPath:[paths lastObject] error: &error];
if (dictionary) {
NSNumber* fileSystemSizeInBytes = [dictionary objectForKey:NSFileSystemFreeSize];
freeSpace = [fileSystemSizeInBytes floatValue];
}
我想知道为什么在运行它时,它给了我3660062720.000000字节的可用空间 这将给出3,408699035644531 Gb(/ 1024/1024/1024)
但是看看我的iPhone设置 - >一般信息(以及iTunes),我说我的iPhone只剩下3.2 Gb了。
错误在哪里?
答案 0 :(得分:2)
有时可能会错误地报告可用空间https://discussions.apple.com/thread/2566412?threadID=2566412
编辑:我尝试了以下代码,并注意到在我的设备上,还有大约200MB的差异。也许那个存储器是以某种方式为系统保留的?
NSDictionary *fsAttr = [[NSFileManager defaultManager] fileSystemAttributesAtPath:NSHomeDirectory()];
unsigned long long freeSpace = [[fsAttr objectForKey:NSFileSystemFreeSize] unsignedLongLongValue];
NSLog(@"%llu", freeSpace);
NSLog(@"%f", freeSpace / 1073741824.0);