話不多說(shuō),直接擼代碼
//// gzhCache.h// cache//// Created by 郭志賀 on 2020/5/27.// Copyright © 2020 郭志賀. All rights reserved.//#import <Foundation/Foundation.h>NS_ASSUME_NONNULL_BEGIN@interface gzhCache : NSObject/// 計(jì)算緩存大小+(float)filePath;/// 清理緩存+(void)clearCache;@endNS_ASSUME_NONNULL_END
//// gzhCache.m// cache//// Created by 郭志賀 on 2020/5/27.// Copyright © 2020 郭志賀. All rights reserved.//#import "gzhCache.h"@implementation gzhCache// 顯示緩存大小+ (float)filePath { NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ]; return [ self folderSizeAtPath :cachPath];}//計(jì)算單個(gè)文件的大小+ (long long) fileSizeAtPath:( NSString *) filePath{ NSFileManager * manager = [ NSFileManager defaultManager ]; if ([manager fileExistsAtPath :filePath]){ return [[manager attributesOfItemAtPath :filePath error : nil ] fileSize ]; } return 0 ;}//遍歷文件夾獲得文件夾大小,返回多少M(fèi)+ (float)folderSizeAtPath:(NSString *)folderPath{ NSFileManager * manager = [ NSFileManager defaultManager ]; if (![manager fileExistsAtPath :folderPath]) return 0 ; NSEnumerator *childFilesEnumerator = [[manager subpathsAtPath :folderPath] objectEnumerator ]; NSString * fileName; long long folderSize = 0 ; while ((fileName = [childFilesEnumerator nextObject ]) != nil ){ NSString * fileAbsolutePath = [folderPath stringByAppendingPathComponent :fileName]; folderSize += [ self fileSizeAtPath :fileAbsolutePath]; } return folderSize/( 1024.0 * 1024.0 );}//清理緩存+ (void)clearCache { NSString * cachPath = [ NSSearchPathForDirectoriesInDomains ( NSCachesDirectory , NSUserDomainMask , YES ) firstObject ]; NSArray * files = [[ NSFileManager defaultManager ] subpathsAtPath :cachPath]; NSLog ( @"cachpath = %@" , cachPath); for ( NSString * p in files) { NSError * error = nil ; NSString * path = [cachPath stringByAppendingPathComponent :p]; if ([[ NSFileManager defaultManager ] fileExistsAtPath :path]) { [[ NSFileManager defaultManager ] removeItemAtPath :path error :&error]; } } [ self performSelectorOnMainThread : @selector (clearCachSuccess) withObject : nil waitUntilDone : YES ];}+ (void)clearCachSuccess { NSLog(@"清理成功");}@end需要查詢大小的地方使用:
NSString *str = [NSString stringWithFormat:@"%.2fM",[gzhCache filePath]];
清理的方法調(diào)用
[gzhCache clearCache];
以上內(nèi)容僅代表本菜鳥(niǎo)看法,復(fù)制可直接使用。如有不妥之處敬請(qǐng)告知。
好了,到此這篇iOS開(kāi)發(fā)之1行代碼實(shí)現(xiàn)緩存計(jì)算及清除緩存的文章就介紹到這了,更多相關(guān)iOS緩存計(jì)算及清除緩存內(nèi)容請(qǐng)搜索武林網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持武林網(wǎng)!
新聞熱點(diǎn)
疑難解答
圖片精選