你的位置:首页 > 操作系统

[操作系统]iOS 清理缓存功能的实现第二种方法


/** * 清理缓存第二种方法 * * @param sender <#sender description#> */- (void)clearCache:(id)sender{  //彻底清除缓存第一种方法  UIButton * button = sender;  [button setTitle:@"清理完毕" forState:UIControlStateNormal];  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);  NSString *path = [paths lastObject];    NSString *str = [NSString stringWithFormat:@"缓存已清除%.1fM", [self folderSizeAtPath:path]];  NSLog(@"%@",str);  NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:path];  for (NSString *p in files) {    NSError *error;    NSString *Path = [path stringByAppendingPathComponent:p];    if ([[NSFileManager defaultManager] fileExistsAtPath:Path]) {      [[NSFileManager defaultManager] removeItemAtPath:Path error:&error];    }  }}/** * 计算单个文件大小 */- (long long) fileSizeAtPath:(NSString*) filePath{  NSFileManager* manager = [NSFileManager defaultManager];  if ([manager fileExistsAtPath:filePath]){    return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];  }  return 0;}/** * 计算目录大小 遍历文件夹获得文件夹大小,返回多少M */- (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/(1024.0*1024.0);}