緩存處理數組
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