美文网首页iOS开发之笔记摘录
获取App的Cache缓存大小---iOS笔记摘录

获取App的Cache缓存大小---iOS笔记摘录

作者: 平安喜乐698 | 来源:发表于2017-09-06 13:45 被阅读12278次

    获取缓存大小

    // 获取缓存大小
    -(NSString*)getCacheSize{
        
        // 获取缓存路径
        NSString *cachPath=[NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES) firstObject];
        float size=[self folderSizeAtPath:cachPath];
        
        if (size == 0.0){
            return @"无缓存";
        }else if (size < 1000){
            return [NSString stringWithFormat:@"%fB", size];
        }else if(size < 1024 * 1024){
            return [NSString stringWithFormat:@"%.2fKB", size / 1024.0];
        }else if(size < 1024 * 1024 * 1024){
            return [NSString stringWithFormat:@"%.2fMB", size / (1024.0 * 1024)];
        }else if(size < 1024 * 1024 * 1024 * 1024ull){
            return [NSString stringWithFormat:@"%.2fGB", size / (1024.0 * 1024 * 1024)];
        }else{
            return [NSString stringWithFormat:@"%.2fTB", size / (1024.0 * 1024 * 1024 * 1024)];
        }
    }
    
    
    
    
    // 遍历文件夹获得文件夹大小,返回多少 M(提示:你可以在工程界设置()m)
    -(float)folderSizeAtPath:( NSString *) folderPath{
        
        // manager
        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 ;
    }
    

    清空缓存

    -(void)clearCache{
        NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ];
        NSArray * files = [[ NSFileManager defaultManager ] subpathsAtPath :cachPath];
        NSLog ( @"cachpath = %@" , cachPath);
        for ( NSString * p in files) {
            NSError * error = nil ;
            NSString * path = [cachPath stringByAppendingPathComponent :p];
            if ([[ NSFileManager defaultManager ] fileExistsAtPath :path]) {
                [[ NSFileManager defaultManager ] removeItemAtPath :path error :&error];
            }
        }
    
        // OK
    }
    

    相关文章

      网友评论

        本文标题:获取App的Cache缓存大小---iOS笔记摘录

        本文链接:https://www.haomeiwen.com/subject/jramjxtx.html