通常凌受,在我們加載圖片的時(shí)候,一般都會(huì)做緩存處理政基,像SDWebImage贞铣,YYWebImage都是有的,但是有緩存沮明,當(dāng)然也需要清理緩存辕坝,直接Copy啦msp的昌偉哥哥的博客中的記錄,在此自己重寫筆記下珊擂。
獲取總的緩存大小
// 獲取某個(gè)路徑下是文件大小
+ (CGFloat)fileSizeAtPath:(NSString *)path {
NSFileManager *fileManager=[NSFileManager defaultManager];
if([fileManager fileExistsAtPath:path]) {
long long size=[fileManager attributesOfItemAtPath:path error:nil].fileSize;
return size/1024.0/1024.0;
}
return 0;
}
// 獲取總的緩存的大小
+ (CGFloat)folderSizeAtPath:(NSString *)path {
NSFileManager *fileManager=[NSFileManager defaultManager];
float folderSize;
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
folderSize +=[ClearCache fileSizeAtPath:absolutePath];
}
return folderSize;
}
return 0;
}
清除緩存
// 清理緩存
+ (void)clearCache:(NSString *)path {
NSFileManager *fileManager=[NSFileManager defaultManager];
if ([fileManager fileExistsAtPath:path]) {
NSArray *childerFiles=[fileManager subpathsAtPath:path];
for (NSString *fileName in childerFiles) {
/**
* 此處圣勒,也可以做 if () 判斷是否不需要?jiǎng)h除某些文件
*/
NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
[fileManager removeItemAtPath:absolutePath error:nil];
}
}
// 這是用到 YYWebImageManager 中 YYImageCache 單獨(dú)需要?jiǎng)h除的
// [[YYWebImageManager sharedManager].cache.diskCache removeAllObjects];
// [[YYWebImageManager sharedManager].cache.memoryCache removeAllObjects];
}
然后直接調(diào)用就OK啦
[CacheFileManager clearCache:YOUR_PATH_CACHE];
self.contentLabel.text = [NSString stringWithFormat:@"%.1lf M",[CacheFileManager folderSizeAtPath:YOUR_PATH_CACHE]];
同時(shí)附上 磁盤總空間大小 和 磁盤可用空間大小
// 磁盤總空間大小
+ (CGFloat)diskOfAllSizeMBytes {
CGFloat size = 0.0;
NSError *error;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if (error) {
#ifdef DEBUG
NSLog(@"error: %@", error.localizedDescription);
#endif
}else{
NSNumber *number = [dic objectForKey:NSFileSystemSize];
size = [number floatValue]/1024/1024;
}
return size;
}
// 磁盤可用空間大小
+ (CGFloat)diskOfFreeSizeMBytes {
CGFloat size = 0.0;
NSError *error;
NSDictionary *dic = [[NSFileManager defaultManager] attributesOfFileSystemForPath:NSHomeDirectory() error:&error];
if (error) {
#ifdef DEBUG
NSLog(@"error: %@", error.localizedDescription);
#endif
}else{
NSNumber *number = [dic objectForKey:NSFileSystemFreeSize];
size = [number floatValue]/1024/1024;
}
return size;
}