#pragma mark - 第一步,计算缓存文件的大小
//首先获取缓存文件的路径
-(NSString *)getPath
{
//沙盒目录下library文件夹下的cache文件夹就是缓存文件夹
NSString * path = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject];
return path;
}
-(CGFloat)folderSizeWithPath:(NSString *)path
{
//初始化文件管理类
NSFileManager * fileManager = [NSFileManager defaultManager];
float folderSize = 0.0;
if ([fileManager fileExistsAtPath:path])
{
//如果存在
//计算文件的大小
NSArray * fileArray = [fileManager subpathsAtPath:path];
for (NSString * fileName in fileArray)
{
//获取每个文件的路径
NSString * filePath = [path stringByAppendingPathComponent:fileName];
//计算每个子文件的大小
long fileSize = [fileManager attributesOfItemAtPath:filePath error:nil].fileSize;//字节数
folderSize = folderSize + fileSize / 1024.0 / 1024.0;
}
//删除缓存文件
[self deleteFileSize:folderSize];
return folderSize;
}
return 0;
}
#pragma mark - 弹出是否删除的一个提示框,并且告诉用户目前有多少缓存
-(void)deleteFileSize:(CGFloat)folderSize
{
if (folderSize > 0.01)
{
UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:[NSString stringWithFormat:@"缓存大小:%.2fM,是否清除?",folderSize] delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确定", nil];
[alertView show];
}
else
{
UIAlertView * alertView = [[UIAlertView alloc]initWithTitle:@"提示" message:@"缓存已全部清理" delegate:nil cancelButtonTitle:nil otherButtonTitles:@"确定", nil];
[alertView show];
}
}
-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex
{
if (buttonIndex == 1)
{
//彻底删除文件
[self clearCacheWith:[self getPath]];
}
}
-(void)clearCacheWith:(NSString *)path
{
NSFileManager * fileManager = [NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path])
{
NSArray * fileArray = [fileManager subpathsAtPath:path];
for (NSString * fileName in fileArray)
{
//可以过滤掉特殊格式的文件
if ([fileName hasSuffix:@".png"])
{
NSLog(@"不删除");
}
else
{
//获取每个子文件的路径
NSString * filePath = [path stringByAppendingPathComponent:fileName];
//移除指定路径下的文件
[fileManager removeItemAtPath:filePath error:nil];
}
}
}
}