iOS之清除缓存


       现在很多App大都采用缓存机制来存储相关的数据,这样既可简单的处理自动登录,也可以暂时保存用户数据或者app使用中所大量用到的数据,然而这样一来,就造成前端缓存冗余过大,当然,一种解决办法为卸载后重新安装,但是这并不能直接解决问题,因为几乎所有用户并不会想到重新下载去清除缓存,都是默认更新,这样缓存文件还存在。

       解决办法粘贴如下:

#pragma mark -- 计算目录下文件(除去.data文件)大小
- (NSString *)fileSizeForDir:(NSString*)path
{
    // 总大小
    unsigned long long size = 0;
    NSString *sizeText = @"0 B";
    // 文件管理者
    NSFileManager *mgr = [NSFileManager defaultManager];
    
    // 文件属性
    NSDictionary *attrs = [mgr attributesOfItemAtPath:path error:nil];
    // 如果这个文件或者文件夹不存在,或者路径不正确直接返回0;
    if (attrs == nil) return [NSString stringWithFormat:@"%lluKB",size];
    if ([attrs.fileType isEqualToString:NSFileTypeDirectory]) { // 如果是文件夹
        // 获得文件夹的大小  == 获得文件夹中所有文件的总大小
        NSDirectoryEnumerator *enumerator = [mgr enumeratorAtPath:path];
        for (NSString *subpath in enumerator) {
            
            if ([subpath rangeOfString:@".data"].location == NSNotFound) {
                NSLog(@"该判断为不想要删除的文件类型");
                
            } else {
                //要删除的布局和问卷统计大小
                
                // 全路径
                NSString *fullSubpath = [path stringByAppendingPathComponent:subpath];
                
                // 累加文件大小
                size += [mgr attributesOfItemAtPath:fullSubpath error:nil].fileSize;
                
                if (size >= pow(10, 9)) { // size >= 1GB
                    sizeText = [NSString stringWithFormat:@"%.2fGB", size / pow(10, 9)];
                } else if (size >= pow(10, 6)) { // 1GB > size >= 1MB
                    sizeText = [NSString stringWithFormat:@"%.2fMB", size / pow(10, 6)];
                } else if (size >= pow(10, 3)) { // 1MB > size >= 1KB
                    sizeText = [NSString stringWithFormat:@"%.2fKB", size / pow(10, 3)];
                } else { // 1KB > size
                    sizeText = [NSString stringWithFormat:@"%zdB", size];
                }
                
            }
            
        }
        return sizeText;
    } else { // 如果是文件
        size = attrs.fileSize;
        if (size >= pow(10, 9)) { // size >= 1GB
            sizeText = [NSString stringWithFormat:@"%.2fGB", size / pow(10, 9)];
        } else if (size >= pow(10, 6)) { // 1GB > size >= 1MB
            sizeText = [NSString stringWithFormat:@"%.2fMB", size / pow(10, 6)];
        } else if (size >= pow(10, 3)) { // 1MB > size >= 1KB
            sizeText = [NSString stringWithFormat:@"%.2fKB", size / pow(10, 3)];
        } else { // 1KB > size
            sizeText = [NSString stringWithFormat:@"%zdB", size];
        }
        
    }
    return sizeText;
}

        上述方法,传入所要计算的文件夹路径,即可返回对应的文件大小。

       希望此文档能帮助同类程序猿,有什么不同意见或间接,请回复,共同探讨。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值