//
|
// BAClearCacheManager.m
|
// BABaseProject
|
//
|
// Created by 博爱 on 16/7/14.
|
// Copyright © 2016年 博爱之家. All rights reserved.
|
//
|
|
#import "BAClearCacheManager.h"
|
|
@implementation BAClearCacheManager
|
|
+ (instancetype)ba_sharedCache
|
{
|
static BAClearCacheManager *manager = nil;
|
static dispatch_once_t onceToken;
|
dispatch_once(&onceToken, ^{
|
manager = [[BAClearCacheManager alloc] init];
|
});
|
|
return manager;
|
}
|
|
#pragma mark - 计算单个文件大小
|
- (CGFloat)ba_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)ba_loadCacheSize
|
{
|
self.cacheSize = 0;
|
NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
|
NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];
|
for (NSString *f in files)
|
{
|
NSString *path = [cachPath stringByAppendingPathComponent:f];
|
self.cacheSize += [self ba_fileSizeAtPath:path];
|
}
|
|
LOG_INFO(@"cacheSize == %f",self.cacheSize);
|
|
return self.cacheSize;
|
|
}
|
|
#pragma mark - 计算目录大小
|
- (CGFloat)ba_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 += [self ba_fileSizeAtPath:absolutePath];
|
}
|
//SDWebImage框架自身计算缓存的实现
|
// folderSize+=[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;
|
LOG_INFO(@"d = %f",folderSize);
|
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) {
|
// //如有需要,加入条件,过滤掉不想删除的文件
|
// NSString *absolutePath=[path stringByAppendingPathComponent:fileName];
|
// [fileManager removeItemAtPath:absolutePath error:nil];
|
// }
|
// }
|
// [[SDImageCache sharedImageCache] cleanDisk];
|
//}
|
|
|
#pragma mark - 清除缓存
|
//第二种:
|
- (void)ba_myClearCacheAction{
|
dispatch_async(
|
dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
|
, ^{
|
NSString *cachPath = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex:0];
|
LOG_INFO(@"cachPath===%@",cachPath);
|
NSArray *files = [[NSFileManager defaultManager] subpathsAtPath:cachPath];
|
LOG_INFO(@"files :%lu",(unsigned long)[files count]);
|
LOG_INFO(@"file === %@",files);
|
for (NSString *p in files)
|
{
|
NSError *error;
|
NSString *path = [cachPath stringByAppendingPathComponent:p];
|
if ([[NSFileManager defaultManager] fileExistsAtPath:path])
|
{
|
[[NSFileManager defaultManager] removeItemAtPath:path error:&error];
|
}
|
}
|
[self performSelectorOnMainThread:@selector(ba_clearCacheSuccess) withObject:nil waitUntilDone:YES];});
|
}
|
|
- (void)ba_clearCacheSuccess
|
{
|
LOG_INFO(@"清理成功");
|
}
|
|
|
@end
|