清除緩存

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"清除緩存" style:(UIBarButtonItemStyleDone) target:self action:@selector(deletClink)];

- (void)deletClink {

//讀取緩存大小

NSString *str = [NSString stringWithFormat:@"%.2fM",[self readCacheSize]];

UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"提示" message:str delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"確定", nil];

[alert show];

}

//2. 清除緩存

- (void)clearFile

{

NSString * cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES ) firstObject];

NSArray * files = [[NSFileManager defaultManager ] subpathsAtPath :cachePath];

//NSLog ( @"cachpath = %@" , cachePath);

for ( NSString * p in files) {

NSError * error = nil ;

//獲取文件全路徑

NSString * fileAbsolutePath = [cachePath stringByAppendingPathComponent :p];

if ([[NSFileManager defaultManager ] fileExistsAtPath :fileAbsolutePath]) {

[[NSFileManager defaultManager ] removeItemAtPath :fileAbsolutePath error :&error];

}

}

}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{

if (buttonIndex == 1) {

[self clearFile];

}

}

//1. 獲取緩存文件的大小

-( float )readCacheSize

{

NSString *cachePath = [NSSearchPathForDirectoriesInDomains (NSCachesDirectory , NSUserDomainMask , YES) firstObject];

return [ self folderSizeAtPath :cachePath];

}

//由于緩存文件存在沙箱中,我們可以通過NSFileManager API來實現對緩存文件大小的計算。

// 遍歷文件夾獲得文件夾大小,返回多少 M

- ( 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);

}

// 計算 單個文件的大小

- ( long long ) fileSizeAtPath:( NSString *) filePath{

NSFileManager * manager = [NSFileManager defaultManager];

if ([manager fileExistsAtPath :filePath]){

return [[manager attributesOfItemAtPath :filePath error : nil] fileSize];

}

return 0;

}

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 移動應用在處理網絡資源時,一般都會做離線緩存處理,其中以圖片緩存最為典型,其中很流行的離線緩存框架為SDWebIm...
    nkk閱讀 809評論 0 0
  • 建議大家看 JKSwiftExtension[https://github.com/JoanKing/JKSwif...
    IIronMan閱讀 5,504評論 2 29
  • #pragma mark - 第一步,計算緩存文件的大小 //首先獲取緩存文件的路徑 -(NSString *)g...
    破夕_____________閱讀 757評論 0 3
  • 清除緩存在每一個應用是一個很常見的功能,今天這里小結一下。 將數據永久性的存儲我們稱為數據持久化,其本質是將數據存...
    追逐_chase閱讀 636評論 0 1
  • 清除緩存的方法 自己在網上找的清除緩存的方法 注:具體代碼在項目一的練習的WXMovi(清除緩存)工程中的More...
    Sweet苗閱讀 1,135評論 0 0

友情鏈接更多精彩內容