计算缓存大小

计算缓存大小。

在字符串分类中暴露两个方法: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];

}

}

你可能感兴趣的:(计算缓存大小)