美文网首页
计算及清除缓存

计算及清除缓存

作者: PZcoder | 来源:发表于2017-03-17 09:26 被阅读17次
    /*
     缓存:
     */
    //1. 显示缓存大小
    - (float)filePath
    {
        NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) firstObject];
    
        return [self folderSizeAtPath:cachPath];
    }
    //2. 遍历文件夹获得文件大小,返回多少M
    - (float)folderSizeAtPath:(NSString*)folderPath
    {
        NSFileManager *manager = [NSFileManager defaultManager];
    
        if (![manager fileExistsAtPath:folderPath])
        {
            return 0;
        }
        
        NSEnumerator *childerFilesEnumerator = [[manager subpathsAtPath:folderPath] objectEnumerator];
        NSString *fileName;
        long long folderSize = 0;
    
        while ((fileName = [childerFilesEnumerator nextObject]) != nil) 
        {
            NSString *fileAbsolutePath = [folderPath stringByAppendingPathComponent:fileName];
            folderSize += [self fileSizeAtPath:fileAbsolutePath];
        }
    
        return folderSize/(1024.0*1024.0);
    }
    
    //3. 需要 计算单个文件的大小
    - (long long)fileSizeAtPath:(NSString *)filePath
    {
        NSFileManager *manager = [NSFileManager defaultManager];
    
        if ([manager fileExistsAtPath:filePath])
        {
            return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];
        }
    
        return 0;
    }
    
    //4. 清除缓存
    - (void)clearFile
    {
        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];
            }
        }
    
        [self performSelectorOnMainThread:@selector(clearCachSuccess) withObject:nil waitUntilDone:YES];
    }
    

    相关文章

      网友评论

          本文标题:计算及清除缓存

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