首页 > 学院 > 开发设计 > 正文

iOS清理缓存功能的实现第二种方法

2019-11-14 18:10:09
字体:
来源:转载
供稿:网友
/** *  清理缓存第二种方法 * *  @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);}

 

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表