清除缓存方法

就像大家都知道的,iOS中的每一个APP都有一个独立的一个沙盒目录,存放用户的一些数据,并且每个APP的沙盒互相之间并不能直接访问,从而起到了保护用户隐私的作用。

那来看看沙盒目录(sandbox)中都是些什么吧:

获取当前APP的沙盒目录的路径:

NSString *homePath = NSHomeDirectory();
   
NSLog(@"homePath == %@", homePath);

沙盒路径打印出来后复制一下,Finder轻点选择“前往文件夹”,把刚刚复制的路径粘贴进去,然后就会看到:

这三个文件夹

其中:

Documents:存放的是程序中建立的数据,比如我们程序中创建的数据库文件等,还有一些浏览的文件数据等

Library:       下有“Caches”和“Preferences”两个文件夹

Caches:        缓存。  且该文件夹在iPhone重启时 数据会被丢弃

Preferences:偏好设置

tmp:           临时文件,APP没使用时,会被自动丢弃





有的时候需要清除缓存,清除的就是Library下Caches里的所有文件了,所以整体思路就是:

1.获取到Caches的文件夹路径;

NSString *cachesPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
NSLog(@"%@",cachesPath);

2. 遍历获取到并拼接每个子目录的完整路径 (使用NSFileManager操作文件(包括计算文件大小、删除文件)时,都需要用到这个完整路径

// 拿到所有子文件路径的数组
NSArray *filesArr = [manager subpathsAtPath:cachesPath];
//  拿到每个子文件的路径,如有有不想清除的文件就在这里判断
for (NSString *childFilePath in filesArr) {
                    
    // 拼接成完整路径
    NSString *fullPath = [cachesPath stringByAppendingString:[NSString stringWithFormat:@"/%@",childFilePath]];
//       NSLog(@"* %@",fullPath);
    folderSize += [self fileSizeAtPath:fullPath]; // 方法.计算单个文件夹的大小
//       NSLog(@"size===%f",folderSize);
}

3. 计算单个文件夹的大小,这里返回的单位是MB

-(float)fileSizeAtPath:(NSString *)path
{
    NSFileManager *manager = [NSFileManager defaultManager];
//    NSLog(@"path === %@",path);
    if ([manager fileExistsAtPath:path]) {
        
        long long size = [manager attributesOfItemAtPath:path error:nil].fileSize;
//        NSLog(@"%lld",size);
        return size/1024.0/1024.0;
    }
    return 0;
}

4. 遍历整个caches下的所有文件,并且一一删除

// 拿到所有子文件路径的数组
NSArray *filesArr = [manager subpathsAtPath:cachesPath];
//  拿到每个子文件的路径,如有有不想清除的文件就在这里判断
for (NSString *childFilePath in filesArr) {
                
    // 拼接成完整路径
    NSString *fullPath = [cachesPath stringByAppendingString:[NSString stringWithFormat:@"/%@",childFilePath]];
                
    [manager removeItemAtPath:fullPath error:nil]; // remove
}


在实际项目中,有的时候会加上AlertView提醒,像这样:




























  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值