缓存处理数组
SDImageCache 拿出图片缓存的大小:[SDImageCache sharedImageCache].getSize;缓存
“%@“,NSTemporaryDirectory()这个方法直接获取沙盒地址;spa
🌹🌟本身写获取文件缓存大小:插件
1方法1;code
1.文件对象:NSFileManager *manager = [NSFileManager defaultManager];orm
2.项目用的是SDWebImage,因此缓存图片地址是插件处理的,若是拿到缓存图片路径????对象
[manager attributesOfItemAtPath : 图片缓存路径 error: nil]; //获得的时候文件夹属性🌟🌟🌟blog
attributesOfItemAtPath对于获取的文件属性是准确的,文件夹是不能获取大小的;图片
NSString *caches = [NSSearchPathForDirectoriesInDomains( NSCachesDirectory,NSUserDomainMask,YES ) lastObject]; //来到沙盒;rem
NSString *cachePath = [caches stringByAppendingPathComponent : @“default / com.hackmist.SDWebImageCache.default”];//拼接缓存文件路径;
文件遍历器:NSDirectoryEnumerator *fileEnumerator = [NSFileManager defaultManager] enumeratorAtPath : cachePath];//建立了一个文件遍历器;
for(NSString *fileName in fileEnumerator){
//返回文件夹里的每个文件的文件名;
NSString *filepath = [cachePath stringByAppendingPathComponent : fileName];
1.有个文件名,拼接成全路径,再得到attributesOfItemAtPath,获得的时候对象, [NSFileSize ] 拿到大小,累加; 2.这个方法,会多计算一个文件夹里的文件夹大小;
BOOL dir = NO;
[manager fileExistsAtPath : filepath isDirectory : &dir];
if(manager fileExistsAtPath: 文件路径 isDirectory:(*BOOL)){ &dir 传一个地址来接收是不是文件夹;
//文件存不存在,文件是否是一个文件夹;🌟🌟🌟
}
if(dir) continue ;
NSString size = [[manager attributesOfItemAtPath : file path error : nil ] [ NSFileSize ] integerValue];
totalSize + = size ; //总的缓存图片大小;
}
2.文件夹里有文件夹
文件属性里有个NSFileType:NSFileTypeDirectory(文件夹) / NSFileTypRegular(文件类型)
if([attrs [ NSFileType] isEqualToString: NSFileTypeDirectory ]) continue;
3.还有一种方法: 方法返回的是一个数组。
NSArray *contents = [manager contentsOfDirectoryAtPath error : nil];//获取文件夹下的全部内容(文件),不包括文件里的文件夹;
[manager subpathsAtPath : (NSString *)];//参数路径——得到路径的下的全部文件包括子路径下的文件、文件夹。同上面的便利文件同样;
最后:
使用SDWebImage处理图片缓存
CGFloat size = [SDImageCache sharedImageCache].getSize / 1000.0 / 1000; //这个计算比较耗时;
cell.textLabel.text = [NSString stringWithFormat : @“清除缓存(已使用%.2fMB)”,size];
cell点击时候清除缓存
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPah:(NSIndexPath *)indexPath{
[[SDImageCache sharedImageCache] clearDisk];
}
// // XMGSettingViewController.h // 01-百思不得姐 #import <UIKit/UIKit.h> @interface XMGSettingViewController : UITableViewController @end
// // XMGSettingViewController.m // 01-百思不得姐 #import "XMGSettingViewController.h" #import <SDImageCache.h> @interface XMGSettingViewController () @end @implementation XMGSettingViewController - (void)viewDidLoad { [super viewDidLoad]; self.title = @"设置"; self.tableView.backgroundColor = XMGGlobalBg; } - (void)getSize2 { // 图片缓存 NSUInteger size = [SDImageCache sharedImageCache].getSize; // XMGLog(@"%zd %@", size, NSTemporaryDirectory()); NSFileManager *manager = [NSFileManager defaultManager]; // 文件夹 NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *cachePath = [caches stringByAppendingPathComponent:@"default/com.hackemist.SDWebImageCache.default"]; // 得到文件夹内部的全部内容 // NSArray *contents = [manager contentsOfDirectoryAtPath:cachePath error:nil]; NSArray *subpaths = [manager subpathsAtPath:cachePath]; XMGLog(@"%@", subpaths); } - (void)getSize { NSFileManager *manager = [NSFileManager defaultManager]; NSString *caches = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]; NSString *cachePath = [caches stringByAppendingPathComponent:@"default/com.hackemist.SDWebImageCache.default"]; NSDirectoryEnumerator *fileEnumerator = [manager enumeratorAtPath:cachePath]; NSInteger totalSize = 0; for (NSString *fileName in fileEnumerator) { NSString *filepath = [cachePath stringByAppendingPathComponent:fileName]; // BOOL dir = NO; // 判断文件的类型:文件\文件夹 // [manager fileExistsAtPath:filepath isDirectory:&dir]; // if (dir) continue; NSDictionary *attrs = [manager attributesOfItemAtPath:filepath error:nil]; if ([attrs[NSFileType] isEqualToString:NSFileTypeDirectory]) continue; totalSize += [attrs[NSFileSize] integerValue]; } XMGLog(@"%zd", totalSize); } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } #pragma mark - Table view data source - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"]; } CGFloat size = [SDImageCache sharedImageCache].getSize / 1000.0 / 1000; cell.textLabel.text = [NSString stringWithFormat:@"清除缓存(已使用%.2fMB)", size]; cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [[SDImageCache sharedImageCache] clearDisk]; // [[NSFileManager defaultManager] removeItemAtPath:<#(NSString *)#> error:<#(NSError *__autoreleasing *)#>]; } @end