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

[操作系统]ios获取缓存文件的大小并清除缓存


移动应用在处理网络资源时,一般都会做离线缓存处理,其中以图片缓存最为典型,其中很流行的离线缓存框架为SDWebImage。

但是,离线缓存会占用手机存储空间,所以缓存清理功能基本成为资讯、购物、阅读类app的标配功能。

今天介绍的离线缓存功能的实现,主要分为缓存文件大小的获取、清除缓存文件的实现。

 

1. 获取缓存文件的大小
-( float )readCacheSize
{
    NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject];
    return [ self folderSizeAtPath :cachePath];
}


由于缓存文件存在沙箱中,我们可以通过NSFileManager API来实现对缓存文件大小的计算。
// 遍历文件夹获得文件夹大小,返回多少 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);
    
}



// 计算 单个文件的大小
- ( long long ) fileSizeAtPath:( NSString *) filePath{
    NSFileManager * manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath :filePath]){
        return [[manager attributesOfItemAtPath :filePath error : nil] fileSize];
    }
    return 0;
}



2. 清除缓存
- (void)clearFile
{
    NSString * cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES ) firstObject];
    NSArray * files = [[NSFileManager defaultManager ] subpathsAtPath :cachePath];
    //NSLog ( @"cachpath = %@" , cachePath);
    for ( NSString * p in files) {
        
        NSError * error = nil ;
        //获取文件全路径
        NSString * fileAbsolutePath = [cachePath stringByAppendingPathComponent :p];
        
        if ([[NSFileManager defaultManager ] fileExistsAtPath :fileAbsolutePath]) {
            [[NSFileManager defaultManager ] removeItemAtPath :fileAbsolutePath error :&error];
        }
    }
    
    //读取缓存大小
    float cacheSize = [self readCacheSize] *1024;
    self.cacheSize.text = [NSString stringWithFormat:@"%.2fKB",cacheSize];

}




去塞舌尔旅游跟团行程塞舌尔旅游护照签证塞舌尔旅游路线报价费用塞舌尔旅游哪里好玩呢塞舌尔旅游签证怎么办理欢乐海岸麦鲁小镇在什么地方?深圳欢乐海岸麦鲁小镇具体位置? 深圳到千年瑶寨怎么走有多远?深圳到连南千年瑶寨多长时间? 2015连南什么时候去最好玩?3月连南千年瑶寨活动介绍? 2015深圳看表演的地方哪里好?深圳欢乐海岸水秀表演怎么样? 光明滑草场游乐园票价?深圳光明农场滑草场优惠价? 光明滑草场游乐园有哪些好玩的?深圳光明农场滑草场门票包含什么? 初冬游福寺 拜访“东方小布达拉”瑞应寺 对延边州美食的赞美(屌丝版) 河源火车站到野趣沟怎么坐车?河源火车站到野趣沟漂流有车吗? 野趣沟暗洞漂流好玩吗?河源野趣沟暗洞漂流多长时间? 黄腾峡全程勇猛漂流多少钱?清远黄腾峡全程勇猛漂流网上预订? 黄腾峡漂流勇猛士漂攻略?清远黄腾峡漂流勇猛士漂哪种更刺激? 流溪河森林公园自驾游?流溪河开车路线? 一日赏尽江南秋 细数无锡最美24小时 流溪河森林公园一天游?流溪河开车需要多长时间? 大美新疆 胡杨林里的秋日童话 ECJ1VC1H560J Datasheet ECJ1VC1H560J Datasheet ECJ1VC1H561J Datasheet ECJ1VC1H561J Datasheet ECJ1VC1H680J Datasheet ECJ1VC1H680J Datasheet 广州鳄鱼公园 广州鳄鱼公园 广州鳄鱼公园 去日本买什么化妆品 去日本买什么化妆品 去日本买什么化妆品 连云港景点 连云港景点 连云港景点