+ (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;
}