+ (float)calculateFileSizeInUnit:(unsigned long long)contentLength { if(contentLength >= pow(1024, 3)) return (float) (contentLength / (float)pow(1024, 3)); else if(contentLength >= pow(1024, 2)) return (float) (contentLength / (float)pow(1024, 2)); else if(contentLength >= 1024) return (float) (contentLength / (float)1024); else return (float) (contentLength); } + (NSString *)calculateUnit:(unsigned long long)contentLength { if(contentLength >= pow(1024, 3)) return @"GB"; else if(contentLength >= pow(1024, 2)) return @"MB"; else if(contentLength >= 1024) return @"KB"; else return @"Bytes"; } + (float ) folderSizeAtPath:(NSString*) folderPath{ NSFileManager* manager = [NSFileManager defaultManager]; if (![manager fileExistsAtPath:folderPath]) return 0; NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator]; NSString* fileName; long long folderSize = 0; while ((fileName = [childFilesEnumerator nextObject]) != nil){ NSString* fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName]; folderSize += [self fileSizeAtPath:fileAbsolutePath]; } return folderSize; } + (long long) fileSizeAtPath:(NSString*) filePath{ NSFileManager* manager = [NSFileManager defaultManager]; if ([manager fileExistsAtPath:filePath]){ return [[manager attributesOfItemAtPath:filePath error:nil] fileSize]; } return 0; } +(NSString *)folderSizeStringAtPath:(NSString*) filePath { float size=[self folderSizeAtPath:filePath]; NSString *fileSizeString=[NSString stringWithFormat:@"%.02f%@",[self calculateFileSizeInUnit:size],[self calculateUnit:size]]; return fileSizeString; }