计算及清除缓存

/*
 缓存:
 */
//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];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容