美文网首页
iOS缓存清理

iOS缓存清理

作者: 见哥哥长高了 | 来源:发表于2016-12-02 14:12 被阅读60次

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

.h

#import <Foundation/Foundation.h>

@interface CacheClean : NSObject
/**
 获取缓存路径
 */
+(NSString *)getCachePath:(NSString *)fileName;
/**
 计算单个文件的大小
 */
+(long long)fileSizeInPath:(NSString *)path;
/**
 计算一个文件夹的大小
 */
+(float)folderSizeInPath:(NSString *)path;
/**
 清空缓存
 */
+(void)cleanCaches:(NSString *)path;

@end

.m

获取缓存路径

+(NSString *)getCachePath:(NSString *)fileName{
    NSString *path = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject;
    NSString *cachesPath = [path stringByAppendingPathComponent:fileName];
    return cachesPath;
}

计算单个文件的大小

+(long long)fileSizeInPath:(NSString *)path{
    //创建文件管理者
    NSFileManager *manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath:path]) {
        //存在文件的话 就返回计算的文件大小
        return [[manager attributesOfItemAtPath:path error:nil] fileSize];
    }
    return 0;
}

计算一个文件夹的大小

+(float)folderSizeInPath:(NSString *)path{
    //创建文件管理者
    NSFileManager *manager = [NSFileManager defaultManager];
    if (![manager fileExistsAtPath:path]) {
        return 0;
    }
    //根据路径 获取文件夹里面的所有数据
    NSEnumerator *enumerator = [[manager subpathsAtPath:path] objectEnumerator];
    
    //获取的文件夹名字
    NSString *fileName = [NSString string];
    
    //计算结果
    float folderSize = 0;
    
    while ((fileName = [enumerator nextObject]) != nil) {
        NSString *absolutePath = [path stringByAppendingPathComponent:fileName];
        folderSize += [self fileSizeInPath:absolutePath];
    }
    return folderSize / (1024 * 1024);
}

清空缓存

+(void)cleanCaches:(NSString *)path{
    NSFileManager *manager = [NSFileManager defaultManager];
    if ([manager fileExistsAtPath:path]) {
        NSArray *fileNameArr = [manager subpathsAtPath:path];
        for (NSString *fileName in fileNameArr) {
            [manager removeItemAtPath:[path stringByAppendingPathComponent:fileName] error:nil];
        }
    }
}

使用起来也是相当的方便 在合适的位置调用

//清除
[CacheClean cleanCaches:[CacheClean getCachePath:@"Caches"]];

//计算 
float folderSize =  [CacheClean folderSizeInPath:[CacheClean getCachePath:@"Caches"]];

相关文章

  • 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/ssxqmttx.html