清除缓存的方法
自己在网上找的清除缓存的方法
注:具体代码在项目一的练习的WXMovi(清除缓存)工程中的MoreViewController中
#pragma
mark -清除缓存的方法
//1.显示缓存的大小
- (float)filePath {
NSString*cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject];
return[selffolderSizeAtPath:cachePath];
}
//2.清除缓存
//a计算单个文件的大小
- (longlong)fileSizeAtPath:(NSString*)filePath {
NSFileManager*manager = [NSFileManagerdefaultManager];
if([managerfileExistsAtPath:filePath]) {
return[[managerattributesOfItemAtPath:filePatherror:nil]fileSize];
}
return0;
}
//b遍历文件夹获得文件夹的大小,返回多少M
- (float)folderSizeAtPath:(NSString*)folderPath {
NSFileManager*manager = [NSFileManagerdefaultManager];
if(![managerfileExistsAtPath:folderPath])return0;
NSEnumerator*filesEnumerator = [[managersubpathsAtPath:folderPath]objectEnumerator];
NSString*fileName;
longlongfolderSize =0;
while((fileName = [filesEnumeratornextObject]) !=nil) {
NSString*fileAbsolutePath = [folderPathstringByAppendingPathComponent:fileName];
folderSize += [selffileSizeAtPath:fileAbsolutePath];
}
returnfolderSize/(1024.0*1024.0);
}
//c清理缓存
-(void)clearFile {
NSString*cachePath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory,NSUserDomainMask,YES)firstObject];
NSArray*files = [[NSFileManagerdefaultManager]subpathsAtPath:cachePath];
NSLog(@"cache = %@",cachePath);
for(NSString*pinfiles) {
NSError*error =nil;
NSString*path = [cachePathstringByAppendingPathComponent:p];
if([[NSFileManagerdefaultManager]fileExistsAtPath:path]) {
[[NSFileManagerdefaultManager]removeItemAtPath:patherror:&error];
}
}
[selfperformSelectorOnMainThread:@selector(clearCacheSuccess)withObject:nilwaitUntilDone:YES];
}
//清理缓存的响应事件
- (void)clearCacheSuccess {
NSLog(@"清理成功");
NSIndexPath*index = [NSIndexPathindexPathForRow:0inSection:0];//刷新
[_tableViewreloadRowsAtIndexPaths:[NSArrayarrayWithObjects:index,nil]withRowAnimation:UITableViewRowAnimationNone];
}
上课学习,老师讲解的清除缓存的方法
注:具体代码在项目一的WXMovie工程的MoreViewController中
111.利用沙盒来清除缓存
//-----沙盒<该模拟器的该App data路径中>
//可以进行操作
/*
默认的三个文件夹
1 documents:保存在应用程序中的重要数据文件和用户数据文件(如:下载的文件等)
2 library:缓存文件(在应用程序使用中,保存一些缓存文件或者偏好设置文件)
3 tmp:临时文件(App关闭后,该文件夹下的东西会清除)
*/
//1获取沙盒路径
NSString*home =NSHomeDirectory();
//(1)图片的缓存路径
NSString*cachePath =@"Library/Caches/default/com.hackemist.SDWebImageCache.default";//通过1的那句代码获取到文件路径(在viewDidLoad方法中调用)
//(2)完整的路径
//NSString *fullPath = [home stringByAppendingString:cachePath];
//会在2个字符串中间自动加一个/
NSString*fullPath = [homestringByAppendingPathComponent:cachePath];
//2使用文件管理删除该路径下的缓存文件
//(1)文件管理者
NSFileManager*fileManager = [NSFileManagerdefaultManager];
//(2)删除路径下的文件
[fileManagerremoveItemAtPath:fullPatherror:nil];
//视图将要出现的时候
- (void)viewWillAppear:(BOOL)animated {
[superviewWillAppear:animated];
//获取缓存
NSIntegersize = [[SDImageCachesharedImageCache]getSize];
//MB---KB---B
titleLabel.text= [NSStringstringWithFormat:@"%.2fM",size/1024.0/1024.0];
}
//将要显示单元格
- (void)tableView:(UITableView*)tableView willDisplayCell:(UITableViewCell*)cell forRowAtIndexPath:(NSIndexPath*)indexPath {
if(indexPath.row==0) {
//获取缓存
NSUIntegersize = [[SDImageCachesharedImageCache]getSize];
//MB---KB---B
titleLabel.text= [NSStringstringWithFormat:@"%.2fM",size/1024.0/1024.0];
}
}
222.资源包的使用
//-----资源包<该模拟器的该App的资源包(bundle)中>
//直接使用的
NSString *path =
[[NSBundle mainBundle] pathForResource:@"line"
ofType:@"png"];