iOS 清理缓存

作者: 天空中的球 | 来源:发表于2016-07-05 09:36 被阅读144次

通常,在我们加载图片的时候,一般都会做缓存处理,像SDWebImage,YYWebImage都是有的,但是有缓存,当然也需要清理缓存,直接Copy啦msp的昌伟哥哥的博客中的记录,在此自己重写笔记下。

获取总的缓存大小

// 获取某个路径下是文件大小
+ (CGFloat)fileSizeAtPath:(NSString *)path {
    NSFileManager *fileManager=[NSFileManager defaultManager];
    if([fileManager fileExistsAtPath:path]) {
        long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
        return size/1024.0/1024.0;
    }
    return 0;
}

// 获取总的缓存的大小
+ (CGFloat)folderSizeAtPath:(NSString *)path {
    NSFileManager *fileManager=[NSFileManager defaultManager];
    float folderSize;
    if ([fileManager fileExistsAtPath:path]) {
        NSArray *childerFiles=[fileManager subpathsAtPath:path];
        for (NSString *fileName in childerFiles) {
            NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
            folderSize +=[ClearCache fileSizeAtPath:absolutePath];
        }
        return folderSize;
    }
    return 0;
}

清除缓存

// 清理缓存
+ (void)clearCache:(NSString *)path {
    NSFileManager *fileManager=[NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) {
        NSArray *childerFiles=[fileManager subpathsAtPath:path];
        for (NSString *fileName in childerFiles) {
            /**
             *  此处,也可以做 if () 判断是否不需要删除某些文件
             */
            NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
            [fileManager removeItemAtPath:absolutePath error:nil];
        }
    }
    // 这是用到 YYWebImageManager 中 YYImageCache 单独需要删除的
//    [[YYWebImageManager sharedManager].cache.diskCache removeAllObjects];
//    [[YYWebImageManager sharedManager].cache.memoryCache removeAllObjects];
}

然后直接调用就OK啦

 [CacheFileManager clearCache:YOUR_PATH_CACHE];
 self.contentLabel.text = [NSString stringWithFormat:@"%.1lf M",[CacheFileManager folderSizeAtPath:YOUR_PATH_CACHE]];

同时附上 磁盘总空间大小 和 磁盘可用空间大小

// 磁盘总空间大小
+ (CGFloat)diskOfAllSizeMBytes {
    CGFloat size = 0.0;
    NSError *error;
    NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
    if (error) {
#ifdef DEBUG
        NSLog(@"error: %@", error.localizedDescription);
#endif
    }else{
        NSNumber *number = [dic objectForKey:NSFileSystemSize];
        size = [number floatValue]/1024/1024;
    }
    return size;
}

// 磁盘可用空间大小
+ (CGFloat)diskOfFreeSizeMBytes {
    CGFloat size = 0.0;
    NSError *error;
    NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
    if (error) {
#ifdef DEBUG
        NSLog(@"error: %@", error.localizedDescription);
#endif
    }else{
        NSNumber *number = [dic objectForKey:NSFileSystemFreeSize];
        size = [number floatValue]/1024/1024;
    }
    return size;
}

备注参考:
http://www.cnblogs.com/mantgh/p/4317855.html

相关文章

  • iOS开发-一句代码调用实现清理缓存功能

    iOS开发-清理缓存,将计算缓存,清理缓存封装成类方法,并将清理结果利用block方法实现返回,一键调用,轻松实现...

  • iOS 清理缓存

    前言: 清理缓存功能几乎是苹果手机的标配吧,今天写了一个清理缓存的工具类,给大家分享一下。 使用: 可以在这里去下...

  • ios - 清理缓存

    直接上demo LYFielService.h LYFielService.m 在Controller的应用

  • iOS 清理缓存

    不多说,直接上代码,如下:

  • iOS缓存清理

    为了更好的管理和利用资源,我们经常要做一些缓存的清理工作,封装一个缓存清理的工具类,来服务于项目开发工作很有必要。...

  • iOS 清理缓存

    通常,在我们加载图片的时候,一般都会做缓存处理,像SDWebImage,YYWebImage都是有的,但是有缓存,...

  • iOS 清理缓存

    计算文件夹大小 清除文件夹下的内容

  • iOS 清理缓存

  • IOS清理缓存

    IOS清理缓存的几种方法,有需要的朋友可以参考下。 - (long long) fileSizeAtPath:(N...

  • iOS清理缓存

    我们在做项目开发的时候,经常会遇到设置清理缓存的问题,对于新手经常会考虑到什么数据存储啊,内存之类一大堆无用的想法...

网友评论

    本文标题:iOS 清理缓存

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