清除缓存方法
来源:互联网 发布:恩比德最新体测数据 编辑:程序博客网 时间:2024/06/05 12:48
就像大家都知道的,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
- ajax清除缓存方法
- 网页清除缓存方法
- $.getJson方法清除缓存
- 网页清除缓存方法
- iOS 缓存清除方法
- 清除缓存的方法
- SDWebImage清除缓存方法
- 清除缓存方法
- cornerstone清除缓存方法
- php 清除缓存的方法
- response方法清除缓存的
- 清除ajax缓存的方法
- linux清除内存缓存方法
- varnish清除缓存的方法
- C# 清除IE缓存方法
- 清除jsp页面缓存方法
- 清除ARP缓存的方法
- C# 清除IE缓存方法
- Android样式开发——Shape
- 阿里面经最新
- Linux发展史
- char、varchar、varchar2区别
- Akka并发编程——第二节:Actor模型(一)
- 清除缓存方法
- Spring Data Redis (Redis Support)
- 五.Core组件进阶(1.颜色空间缩减)
- VUE开始之路的问题记录
- 算术运算符
- 【android学习】重要组件-intent
- 使用RSA对C++ 客户端和 PHP 服务端之间通信的数据进行加密
- 队花的烦恼一
- 近几天的总结