在APP开发中,大量的图片或消息占用系统内存,造成一堆垃圾信息,所以开发清除缓存功能就显得必不可少了。

  代码段1:获取文件的大小

- (long long) fileSizeAtPath:(NSString*) filePath{

    NSFileManager* manager = [NSFileManager defaultManager];

    if ([manager fileExistsAtPath:filePath]){

        return [[manager attributesOfItemAtPath:filePath error:nil] fileSize];

    }

    return 0;

}

  代码段2:获取文件的大小

//遍历文件夹获得文件夹大小,返回多少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);

}

   

  代码段3:清除缓存功能方法一

1.清除缓存第一种

- (void)action:(id)sender

{

    //彻底清除缓存第一种方法

    UIButton * button = sender;

    [button setTitle:@"清理完毕" forState:UIControlStateNormal];

    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);

    NSString *path = [paths lastObject];

    NSString *str = [NSString stringWithFormat:@"缓存已清除%.1fM", [self folderSizeAtPath:path]];

    NSLog(@"%@",str);

    NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:path];

    for (NSString *p in files) {

        NSError *error;

        NSString *Path = [path stringByAppendingPathComponent:p];

        if ([[NSFileManager defaultManager] fileExistsAtPath:Path]) {

            [[NSFileManager defaultManager] removeItemAtPath:Path error:&error];

       }
    }
}

  代码段4:清除缓存功能方法二

[[SDImageCache sharedImageCache] clearDisk];

[[SDImageCache sharedImageCache] clearMemory];