计算及清除缓存

/*
 缓存:
 */
//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];
}

你可能感兴趣的:(计算及清除缓存)