美文网首页
计算缓存大小及清理

计算缓存大小及清理

作者: _源计划 | 来源:发表于2017-12-14 14:29 被阅读2次

// 获取Caches目录路径

- (NSString *)getCachesPath{

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask,YES);

NSString *cachesDir = [paths lastObject];

return cachesDir;

}

//计算目录大小

- (CGFloat)folderSizeAtPath:(NSString *)path{

NSFileManager *manager = [NSFileManager defaultManager];

CGFloat size = 0;

if ([manager fileExistsAtPath:path]) {

// 目录下的文件计算大小

NSArray *childrenFile = [manager subpathsAtPath:path];

for (NSString *fileName in childrenFile) {

NSString *absolutePath = [path stringByAppendingPathComponent:fileName];

size += [manager attributesOfItemAtPath:absolutePath error:nil].fileSize;

}

//SDWebImage的缓存计算

size += [[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;

// 将大小转化为M

return size / 1024.0 / 1024.0;

}

return 0;

}

//根据路径删除文件

- (void)cleanCaches:(NSString *)path{

NSFileManager *fileManager = [NSFileManager defaultManager];

if ([fileManager fileExistsAtPath:path]) {

NSArray *childrenFiles = [fileManager subpathsAtPath:path];

for (NSString *fileName in childrenFiles) {

// 拼接路径

NSString *absolutePath = [path stringByAppendingPathComponent:fileName];

// 将文件删除

[fileManager removeItemAtPath:absolutePath error:nil];

}

}

//SDWebImage的清除功能

[[SDImageCache sharedImageCache] clearDiskOnCompletion:nil];

[[SDImageCache sharedImageCache] clearMemory];

}

//点击按钮删除时间

-(void)action{

CGFloat size = [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES).lastObject] + [self folderSizeAtPath:NSTemporaryDirectory()];

NSString *message = size > 1 ? [NSString stringWithFormat:@"缓存%.2fM", size] : [NSString stringWithFormat:@"缓存%.2fK", size * 1024.0];

UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"删除缓存" message:message preferredStyle:UIAlertControllerStyleAlert];

UIAlertAction *action = [UIAlertAction actionWithTitle:@"确定" style:(UIAlertActionStyleDefault) handler:^(UIAlertAction *action) {

[self cleanCaches:[self getCachesPath]];

}];

UIAlertAction *cancel = [UIAlertAction actionWithTitle:@"取消" style:(UIAlertActionStyleCancel) handler:nil];

[alertController addAction:action];

[alertController addAction:cancel];

[self presentViewController:alertController animated:YES completion:nil];

}

相关文章

网友评论

      本文标题:计算缓存大小及清理

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