ios - 清理缓存

作者: flowerflower | 来源:发表于2017-07-24 17:18 被阅读1335次

直接上demo

LYFielService.h


@interface LYFielService : NSObject
//计算单个文件大小
+(float)fileSizeAtPath:(NSString *)path;
//清理缓存文件
+(void)clearCache:(NSString *)path;
//计算目录大小
+(float)folderSizeAtPath:(NSString *)path;
//缓存路径
+(NSString *)getPath;
@end

LYFielService.m

#import "LYFielService.h"
#import <SDWebImage/SDImageCache.h>
@implementation LYFielService

//计算单个文件大小
+(float)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;
}

//清理缓存文件
+(void)clearCache:(NSString *)path{
    NSFileManager *fileManager=[NSFileManager defaultManager];
    if ([fileManager fileExistsAtPath:path]) {
        NSArray *childerFiles=[fileManager subpathsAtPath:path];
        for (NSString *fileName in childerFiles) {
            //如有需要,加入条件,过滤掉不想删除的文件
            NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
            [fileManager removeItemAtPath:absolutePath error:nil];
        }
    }
//     [[SDImageCache sharedImageCache] clearDisk]; //关键是这句 4.0之后没有该方法 则直接使用下面的方法即可
    [[SDImageCache sharedImageCache]clearDiskOnCompletion:nil];
}
//计算目录大小
+(float)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 +=[LYFielService fileSizeAtPath:absolutePath];
        }
        //SDWebImage框架自身计算缓存的实现
    folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
    return folderSize;
    }
    return 0;
}
//缓存路径
+(NSString *)getPath {
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
    NSString *path = [paths lastObject];
    return path;
}
@end

在Controller的应用

#pragma mark - Life Cycle
- (void)viewWillAppear:(BOOL)animated{
     [super viewWillAppear:YES];
      [self.tableView reloadData];
}
#pragma mark - <UITableViewDataSource,UITableViewDelegate>
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:SettingCellID];
    if (!cell) {
        cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:SettingCellID];        ;
    }
    cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
        return cell;
  cell.detailTextLabel.text = [self getCacheSize];
return cell;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
   [MBProgressHUD  LY_ShowSuccess:LYLocalizedString(@"正在清除缓存")  toView:self.view];
      [LYFielService clearCache:@"Library/Caches"];
    [tableView reloadRowsAtIndexPaths:@[[NSIndexPath indexPathForItem:1 inSection:1]] withRowAnimation:UITableViewRowAnimationFade];
}
#pragma mark - Custom Methods
- (NSString *)getCacheSize{
    
  float size_m = [LYFielService folderSizeAtPath:@"Library/Caches"];
    return [NSString stringWithFormat:@"%.2fMB",size_m];

}

相关文章

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