美文网首页
清除缓存的方法

清除缓存的方法

作者: Sweet苗 | 来源:发表于2016-10-30 12:58 被阅读143次

清除缓存的方法

自己在网上找的清除缓存的方法

注:具体代码在项目一的练习的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"];

相关文章

网友评论

      本文标题:清除缓存的方法

      本文链接:https://www.haomeiwen.com/subject/hkrtettx.html