计算缓存大小。
在字符串分类中暴露两个方法:1个是计算大小,1个是根据大小分类。
方法实现
- (NSInteger)fileSize
{
// 创建文件管理者
NSFileManager *manager = [NSFileManager defaultManager];
// 先判断文件是否存在
BOOL isDirectory = NO;
BOOL exist = [manager fileExistsAtPath:self isDirectory:&isDirectory];
// 如果文件不存在
if (exist==NO) return 0;
// 如果文件存在 判断为文件夹还是文件
if (isDirectory) {
// 计算文件大小。拿到了完整路径
NSInteger fileSize = 0;
// 用完整路径查询所有的文件的大小,返回为数组
NSArray *pathArray = [manager subpathsAtPath:self];
// 遍历数组,将获得的数组字符串拼接到file上
for (NSString *path in pathArray) {
// 获得完整地址
NSString *fulSubPath = [self stringByAppendingPathComponent:path];
// 获得属性
NSDictionary *attrs = [manager attributesOfItemAtPath:fulSubPath error:nil];
// 过滤掉文件夹
if ([attrs[NSFileType] isEqualToString:NSFileTypeDirectory]) continue;
// 将属性中的fileSize相加。
fileSize += [attrs[NSFileSize] integerValue];
}
return fileSize;
}
return [[manager attributesOfItemAtPath:self error:nil][NSFileSize] integerValue];
}
- (NSString *)fileSizeString
{
NSInteger fileSize = self.fileSize;
// 设定一个单位
CGFloat unit = 1000.0;
// 对fileSize进行判断
if (fileSize>= unit * unit * unit) {
return [NSString stringWithFormat:@"%.1fGB",fileSize/(unit*unit*unit)];
}else if (fileSize>= unit*unit) {
return [NSString stringWithFormat:@"%.1fMB",fileSize/(unit*unit)];
}else if (fileSize>= unit){
return [NSString stringWithFormat:@"%.1fKB",fileSize/unit];
}else
{
return [NSString stringWithFormat:@"%zdB",fileSize];
}
}