清除缓存方法

来源:互联网 发布:恩比德最新体测数据 编辑:程序博客网 时间: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提醒,像这样:




























原创粉丝点击